我以为我已经明白你应该在onCreate()和onDestroy()中的FragmentTransaction.remove()中调用FragmentTransaction.add()。我的应用程序在onDestroy()中崩溃并出现此错误:
06-26 15:25:50.213: E/AndroidRuntime(579): java.lang.RuntimeException: Unable to destroy activity {com.myapp/com.myapp.MainActivity}: java.lang.IllegalStateException: Activity has been destroyed
如果不在onCreate / onDestroy()中,我什么时候调用这些东西?
答案 0 :(得分:4)
我的问题是当我切换到我的水平视图,然后回到我的垂直视图时,我现在至少有一个嵌套片段的重复布局。
我的猜测是,这是因为您总是在onCreate()
中添加片段。 Android会自动在配置更改时重新创建片段。因此,onCreate()
应该在添加之前检查片段是否已经存在:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentById(android.R.id.content)==null) {
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content,
new RotationFragment()).commit();
}
}
答案 1 :(得分:2)
好的,您的解决方案有效,除了使用:
if (getSupportFragmentManager().findFragmentById(android.R.id.content)==null)
我用过:
if (savedInstanceState==null)
显然片段管理器不是由onCreate函数设置的。但是,由于你的回答大多是正确的,我将其标记为答案。
我想再次感谢你。这是你第二次对我有很大的帮助,我真的很感激。