我有一个名为Activity
的{{1}},它使用片段HomeActivity
和HomeFragment
。
当我点击OwnershipFragment
中的列表视图项时,会执行片段事务并启动HomeFragment
。
在OwnershipFragment
我有以下OwnershipFragment
方法:
onSaveInstanceState
并在@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
for(int i = 0; i <mDirectors.size(); i++)
mDirectors.get(i).updateFromForm();
outState.putSerializable(DIRECTORS, mDirectors);
}
...
onCreateView
基本上,应用程序崩溃后会发生以下情况:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_ownership, container, false);
mFormContainer = (LinearLayout) rootView.findViewById(R.id.ownership_form_container);
mManager = new SessionManager(getActivity());
mDirectors = new ArrayList<Director>();
if (savedInstanceState != null)
mDirectors = (ArrayList<Director>) savedInstanceState.getSerializable(DIRECTORS);
else
mDirectors = mManager.getDirectors();
//Other stuff
return rootView;
}
的列表视图项。 (工作正常)OwnershipFragment
的事务并将HomeFragment
放在后面的堆栈上。 (工作正常)OwnershipFragment
处显示:for(int i = 0; i&lt; mDirectors.size(); i ++)//在onSaveInstanceState方法中
我无法弄清楚为什么,因为我无法找到NullPointerException
被赋予mDirectors
值的位置。我不确定提供什么其他代码,所以请告诉我,我会把它放进去。
如果显示的当前片段为null
,为什么onSaveInstanceState
的{{1}}首先被调用?
这是我的Logcat:
OwnershipFragment
答案 0 :(得分:1)
根据您的评论,将mDirectors
的定义更改为
ArrayList<Director> mDirectors = new ArrayList<Director>();
或在for for中检查null为
for(int i = 0; mDirectors != null && i < mDirectors.size(); i++)