小编Aay*_*eja的帖子

方向更改后,片段管理器是否会还原屏幕上最后支付的片段?

该应用包含一个活动(FrameLayout仅包含一个活动)和三个Fragments(它们的结构相同,都有一个按钮,但唯一的区别是不同的背景颜色)组成。

首次创建活动时,所有片段都将FrameLayout被替换成一个片段。当我们单击屏幕上(片段的)按钮时,它将当前片段替换为另一个片段。

问题是,在屏幕旋转时,活动显示的是应用程序首次启动时显示的片段,而与旋转之前显示的片段无关。

为什么会这样?为什么最后显示的片段没有在屏幕上还原?

我知道我可以使用onSavedInstanceState,但更重要的是,我想学习FragmentManager的工作方式。

主要活动:

public class MainActivity extends AppCompatActivity implements ActivityInstance {

    fraga a;
    fragb b;
    fragc c;
    FragmentManager fm;

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


        if (fm.findFragmentByTag("a")!=null){
            a  = (fraga) fm.findFragmentByTag("a");
        }
        else {
            a = new fraga();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.frame, a, "a" );
            ft.commit();
        }

        if (fm.findFragmentByTag("b")!=null){
            b  = (fragb) fm.findFragmentByTag("b");
        }
        else {
            b = new fragb();
            FragmentTransaction fx = …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

1
推荐指数
1
解决办法
355
查看次数

标签 统计

android ×1

android-fragments ×1