这是不太可能的,但是它可能为我节省大量时间来重写相同的代码。我想使用警报类型的服务(例如Chathead)来实现UI,但我仍然想使用片段。可能吗?我知道我可以向窗口添加视图但可以添加片段吗?
片段代表行为或用户界面中的
部分活动。您可以在一个活动中合并多个片段,以构建多窗格UI并在多个活动中重用片段。您可以将片段视为希望对您有帮助。活动的模块化部分,它具有自己的生命周期,接收自己的输入事件,您可以在活动运行时添加或删除(类似于“ sub活动”,您可以在其他活动中重复使用)。
public class ActivityFragmentWrapper extends FragmentActivity {
public static final String KEY_FRAGMENT_CLASS = "keyFragmentClass";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getExtras() != null) {
String fragmentClass = (String) getIntent().getExtras().get(KEY_FRAGMENT_CLASS);
try {
Class<?> cls = Class.forName(fragmentClass);
Constructor<?> constructor = cls.getConstructor();
Fragment fragment = (Fragment) constructor.newInstance();
// do some managing or add fragment to activity
getFragmentManager().beginTransaction().add(fragment, "bla").commit();
} catch (Exception LetsHopeWeCanIgnoreThis) {
}
}
}
public static void startActivityWithFragment(Context context, String classPathName) {
Intent intent = new Intent(context, ActivityFragmentWrapper.class);
intent.putExtra(KEY_FRAGMENT_CLASS, classPathName);
context.startActivity(intent);
}
}
您可以像这样开始:
ActivityFragmentWrapper.startActivityWithFragment(context, SomeSpecificFragment.class.getCanonicalName().toString());
当然,如果您的片段具有另一个构造函数,则必须检索其他一,但是那部分变得容易。