Android:所有片段的一个活动
最好只使用一个Android:所有片段的一个活动,android,android-activity,fragment,Android,Android Activity,Fragment,最好只使用一个活动来加载作为intent的附加项传递的片段类?这个解决方案有效,但我不确定它是否是一个好模式。我希望使用这种方法,因为(目前)每个片段“都是”一个活动,所以我希望避免为每个片段创建活动 以下是我唯一的活动示例: public class GenericActivity extends FragmentActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreat
活动
来加载作为intent的附加项传递的片段
类?这个解决方案有效,但我不确定它是否是一个好模式。我希望使用这种方法,因为(目前)每个片段“都是”一个活动,所以我希望避免为每个片段创建活动
以下是我唯一的活动示例:
public class GenericActivity extends FragmentActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onepane);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
String fragmentToLoadName;
try{
fragmentToLoadName = getIntent().getExtras().getString("FRAGMENT");
}catch(NullPointerException e){
FragmentHelper.add(R.id.fragment_container, new MainFragment(),
MainFragment.class.getName(), getSupportFragmentManager());
}
if(fragmentToLoadName!=null){
Class fragment_to_load_class = null;
try {
fragmentToLoadClass = Class.forName(fragmentToLoadName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
FragmentHelper.add(R.id.fragment_container, (Fragment) fragmentToLoadClass.newInstance(),
fragmentToLoadName, getSupportFragmentManager());
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
您将遇到的主要缺点是,如果您想在任何片段上设置RetainInstance(true),则无法将它们添加到后堆栈中。因此,您基本上放弃了通过设备后退按钮进行导航。这绝对不是一个好方法。我已经用setRetainInstance(true)对每个片段进行了测试,通过back按钮导航正常。-请阅读这里的文件。我倾向于认为您对正常的判断是不准确的。“这只能用于不在后堆栈中的片段。如果设置,则在重新创建活动时,片段生命周期将略有不同。”