保留活动中的片段状态

时间:2017-01-09 12:01:52

标签: android android-fragments android-activity

我有一项活动让我们说它的名字是MainActivity,该活动有三个按钮,

button one launch FragmetA
button two launch FragmetB
button three launch FragmetC

最初MainActivity发布FragmentA时启动。

假设FragmentB中有一个按钮,在该按钮上点击一个新的活动SecondActivity启动。当我点击SecondActivity的后退按钮时,它会返回到MainActivityFragmentA启动,我想要的是当我按SecondActivity的后退按钮时,我希望看到{ {1}},我该怎么做?

2 个答案:

答案 0 :(得分:1)

只需保存在onSaveInstanceState中打开的片段,并在onCreate中显示正确的片段。例如:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState != null) {
        switch (savedInstanceState.getString("fragment")) {
            case "a":
                //show fragment a
                break;
            case "b":
                //show fragment b
                break;
            ...
        }
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    outState.putString("fragment", "a"); // in case if fragment a visible
}

答案 1 :(得分:1)

  

当MainActivity最初推出FragmentA时。

如何从MainActivity启动片段?您的Fragment州应该由FragmentManager保留,如果您这样做:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState == null) {
        // Only launch if Activity is not recreated.
        launchFragmentA();
    }
}

SecondActivity返回时,您应该看到FragmentB