Android处理方向更改 - 如果轮换发生则无变化

时间:2016-06-16 01:31:33

标签: android android-fragments

我在处理方向时遇到了问题。

我在运行应用程序时加载的活动中有一个片段。

fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.main_container, new HomeFragment());
            fragmentTransaction.commit();
            getSupportActionBar().setTitle("Home");

输出:(默认方向 - 肖像)

enter image description here

然而,当我将手机旋转到横向时,它只是将片段加起来。

输出:

enter image description here

有什么方法可以解决这个问题吗?我一直在阅读有关在运行时处理轮换的一些问题,但他们的解决方案是禁用方向。有人还说要使用AsyncTask函数来处理这件事。我是android的新手,我还不熟悉其他的android库。谢谢你回答。

1 个答案:

答案 0 :(得分:1)

屏幕旋转不会破坏您之前的片段,而是保存并恢复它的状态。

我猜你在Activity的fragmentTransaction方法中调用onCreate逻辑,因此每次恢复活动时,它都会在旧的片段之上添加一个新片段。< / p>

您可以通过检查savedInstanceState方法上的onCreate() Bundle是否为空来阻止这种情况,这样,如果您正在重新创建活动,则不会添加新的片段:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    ...

    if(savedInstanceState == null) {
        fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.main_container, new HomeFragment());
        fragmentTransaction.commit();
        getSupportActionBar().setTitle("Home");
    }

}

希望它有所帮助。