我在活动中有几个片段,由底栏更改。我尝试使用Once for all, how to correctly save instance state of Fragments in back stack?实现片段状态处理 问题是
mContent = getSupportFragmentManager().getFragment(savedInstanceState, TAG);
返回下一个错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference
调试时我有下一个savedInstanceSet:
ArrayMap@5665, size = 4
value[0]=Bundle
value[1]="FragmentName"
value[2]=FragmentManagerState
value[3]={Integer}"0"
请不要粘贴
等解决方案 setRetainInstance(true),
android:configChanges="orientation|screenSize"
等等,因为我需要重新创建片段(陆地和肖像的不同xml文件)。
答案 0 :(得分:1)
使用以下代码;
将此行添加到menifest
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
onCreate(savedInstanceState);
}
并将此功能添加到您的活动文件
int n = 0;
while (n < number)
{
btnArray[n].Name = "" + (n + 1);
tablePanel.Controls.Remove(btnArray[n]);
n++;
}
答案 1 :(得分:0)
如果您不想覆盖配置更改
,请将其包含在清单中
<activity android:name=".MainActivity" android:configChanges="orientation|screenSize|screenLayout" >
如果您不想覆盖onConfigChange,这基本上允许操作系统为您处理方向更改此代码应该可以正常工作