package com.yzy.supercleanmaster.base;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.MenuItem;
import com.yzy.supercleanmaster.R;
import com.yzy.supercleanmaster.utils.FragmentArgs;
import java.lang.reflect.Method;
public class FragmentContainerActivity extends BaseSwipeBackActivity {
/**
* 启动一个界面
*
* @param activity
* @param clazz
*/
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 FragmentContainerActivity() {
super();
}
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();
}
}
} catch (Exception e) {
e.printStackTrace();
finish();
return;
}
}
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_fragment_container);
if (fragment != null) {
getFragmentManager().beginTransaction().add(R.id.fragmentContainer, fragment, className).commit();
}
if (getActionBar() != null)
getActionBar().setDisplayShowHomeEnabled(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}