在片段第一次创建并重新附加到活动时,您对片段回调获得的savedInstanceState包有疑问。Android:使用带片段的savedInstanceState
因此,我使用setRetainInstance(true)作为结果,片段不应该被销毁,而只是在活动被销毁时从活动中脱离,然后在配置更改时重新创建活动时重新连接。
如此,因为使用这种setRetainInstance(真),这将导致savedInstanceState束ALWAYS是在该片段中的回调,如空:onActivityCreated()
,onCreate()
等
到目前为止好,现在我从某些用户(一个非常小的数字)获得一些崩溃,这是由于此片段上的savedInstanceState不为null而导致的。
因此,onActivityCreated()回调是做这样的事情:
@Override
public void loadInstanceState(Bundle savedInstanceState) {
if (savedInstanceState != null) {
//do some stuff which is causing a crash
}
}
:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
adapter = new CustomAdapter(getActivity(), getListView(), data, savedInstanceState);
setListAdapter(adapter);
setupEmptyListView();
getListView().setOnScrollListener(this);
}
的CustomAdapter在从它的构造一些点loadInstanceState()
方法,它的工作,下面的代码调用
现在我的问题是如何进入该if语句时,我传递的savedInstanceState应该始终为空。
而现在的问题:
的是Android保证,当上一个片段使用setRetainInstance(true)
其传递给回调savedInstanceState束将永远是空?
谢谢你的答案!
我想你需要注意['onSaveInstance'方法](https://www.google.com.vn/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDcFjAB&url=http%3A%2F %2Fstackoverflow.com%2Fquestions%2F9938862%2Fandroid-和onsaveinstance和恢复与EI = Mck8U7rOG-H-iAfT14GIBw与USG = AFQjCNHfPxzq_Bjd9wFV8GKtFpzwXx30ZQ&SIG2 = Zy7or38dyhnDfoF4VEUxEQ与BVM = bv.63934634,d.aGc) – 2014-04-03 02:37:14