我在 Honeycomb 中开发了一个应用程序,我正在使用 fragment 。
这是我的应用程序
- 我有一个 Activity(比如 A1),其中有一个 fragment
- 最初这个 fragment 持有对象一个 fragment 对象说(F1)
- 然后根据用户操作,它可能会更改为其他对象 F2、F3 ....
我的问题是什么
当用户旋转设备时,Activity 被重新创建,这使得 F1 成为 fragment 对象,即使在旋转之前它不是
在旋转的同时保留fragment对象的方法是什么?
我使用了 setRetainInstance(true);
但它对我不起作用
我已经在我的 onCreate
函数中通过代码添加了 fragment ,就像这样
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
Fragment homeFragment = new Home();
fragmentTransaction.add(R.id.mainFragement, homeFragment);
fragmentTransaction.commit();
}
最佳答案
默认情况下,Android 会保留 fragment 对象。在您的代码中,您在 onCreate
函数中设置 homeFragment
。这就是为什么在 onCreate
中设置的总是一些 homeFragment
或 fl
。
因为每当您旋转时,onCreate 都会执行并将您的 fragment 对象设置为第一个
所以对你来说最简单的解决方案是检查 savedInstanceState
包是否为空并设置 fragment 对象
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(null == savedInstanceState) {
// set you initial fragment object
}
}
关于android - 旋转时保留 Fragment 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5164126/