我在处理方向时遇到了问题。
我在运行应用程序时加载的活动中有一个片段。
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new HomeFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Home");
输出:(默认方向 - 肖像)
然而,当我将手机旋转到横向时,它只是将片段加起来。
输出:
有什么方法可以解决这个问题吗?我一直在阅读有关在运行时处理轮换的一些问题,但他们的解决方案是禁用方向。有人还说要使用AsyncTask函数来处理这件事。我是android的新手,我还不熟悉其他的android库。谢谢你回答。
答案 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");
}
}
希望它有所帮助。