Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:所有片段的一个活动_Android_Android Activity_Fragment - Fatal编程技术网

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按钮导航正常。-请阅读这里的文件。我倾向于认为您对正常的判断是不准确的。“这只能用于不在后堆栈中的片段。如果设置,则在重新创建活动时,片段生命周期将略有不同。”