问题描述
我在 Honeycomb 中开发了一个应用程序,并且正在使用片段.
这是我的应用
I have developed an app in Honeycomb and I am using fragments.
This is my app
- 我有一个活动(比如 A1),其中有一个片段
- 最初这个片段持有对象一个片段对象说(F1)
- 然后根据用户操作,它可能会更改为其他对象 F2、F3 ....
我的问题是什么
当用户旋转设备时,活动被重新创建,这使得 F1 作为片段对象,即使在旋转之前它不是旋转时保留fragment对象的方法是什么?
我使用了 setRetainInstance(true);
但它对我不起作用
我在我的 onCreate
函数中按代码添加了这个片段
When The user rotate the device the activity is recreated and which make F1 as the fragment object even though before rotating it wasn'tWhat is the way to retain the fragment object while rotating?
I used setRetainInstance(true);
but it didn't work for me
And I have added the fragment by code in my onCreate
function like this
@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 默认会保留片段对象.在您的代码中,您正在 onCreate
函数中设置 homeFragment
.这就是为什么它总是一些 homeFragment
或 fl
您在 onCreate
中设置的内容.
By default Android will retain the fragment objects. In your code you are setting the homeFragment
in your onCreate
function. That is why it is allways some homeFragment
or fl
what ever that you set in onCreate
.
因为无论何时旋转,onCreate 都会执行并将您的片段对象设置为第一个
所以对您来说最简单的解决方案是检查 savedInstanceState
bundle 是否为 null 并设置片段对象
So the easy solution for you is check whether savedInstanceState
bundle is null or not and set the fragment object
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(null == savedInstanceState) {
// set you initial fragment object
}
}
这篇关于旋转时保留 Fragment 对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!