package org.aisen.weibo.sina.ui.activity.common;
import java.lang.reflect.Method;
import org.aisen.weibo.sina.ui.fragment.base.BizFragment;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import com.m.R;
import com.m.ui.utils.FragmentArgs;
/**
* 公共界面
*
* @author Jeff.Wang
*
*/
public class FragmentContainerActivity extends WeiboBaseActivity {
private int overrideTheme = -1;
/**
* 启动一个界面
*
* @param activity
* @param clazz
* @param values
*/
public static void launch(Activity activity, Class<? extends Fragment> clazz, FragmentArgs args) {
Intent intent = new Intent(activity, FragmentContainerActivity.class);
intent.putExtra("className", clazz.getName());
if (args != null)
intent.putExtra("args", args);
activity.startActivity(intent);
}
public static void launchForResult(Fragment fragment, Class<? extends Fragment> clazz, FragmentArgs args,
int requestCode) {
if(fragment.getActivity() == null)
return;
Activity activity = fragment.getActivity();
Intent intent = new Intent(activity, FragmentContainerActivity.class);
intent.putExtra("className", clazz.getName());
if (args != null)
intent.putExtra("args", args);
fragment.startActivityForResult(intent, requestCode);
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected void onCreate(Bundle savedInstanceState) {
String className = getIntent().getStringExtra("className");
if (TextUtils.isEmpty(className)) {
finish();
return;
}
FragmentArgs values = (FragmentArgs) getIntent().getSerializableExtra("args");
Fragment fragment = null;
if (savedInstanceState == null) {
try {
Class clazz = Class.forName(className);
fragment = (Fragment) clazz.newInstance();
if (values != null) {
try {
Method method = clazz.getMethod("setArguments", new Class[] { Bundle.class });
method.invoke(fragment, FragmentArgs.transToBundle(values));
} catch (Exception e) {
// e.printStackTrace();
}
}
try {
Method method = clazz.getMethod("setTheme");
if(method != null)
overrideTheme = Integer.parseInt(method.invoke(fragment).toString());
} catch (Exception e) {
// e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
finish();
return;
}
}
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_fragment_container);
BizFragment.getBizFragment(this);
if(fragment != null) {
getFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, className).commit();
}
if (getActionBar() != null)
getActionBar().setDisplayShowHomeEnabled(false);
}
@Override
protected int configTheme() {
if (overrideTheme > 0)
return overrideTheme;
return super.configTheme();
}
}