我正在使用支持库 v4,但未能保存 fragment 的状态。
@Override
protected void onSaveInstanceState(Bundle outState)
{
...
if(mFragment != null)
getSupportFragmentManager().putFragment(outState, "frag", mFragment);
...
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
...
if(savedInstanceState != null)
{
//Here I get NullPointerException
getSupportFragmentManager().getFragment(savedInstanceState, "frag");
}
...
}
当我调用 getFragment() 时抛出 NullPointerException(savedInstanceState 包含带有“frag”的条目)。
这是 logcat 输出的一部分:
04-18 00:10:56.719: E/AndroidRuntime(14644): Caused by: java.lang.NullPointerException
04-18 00:10:56.719: E/AndroidRuntime(14644): at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569)
我还尝试调用返回 null
的 getFragments()
。这在我看来很奇怪。
我将不胜感激!
解决方案:
我忘记在 onCreate
方法中使用 super.onSaveInstanceState(outState);
。
最佳答案
感谢@Fllo。问题是我忘记调用父 Activity 的 onSaveInstanceState()
。
@Override
protected void onSaveInstanceState(Bundle outState)
{
//Added this and the problem was solved
super.onSaveInstanceState(outState);
...
}
关于android - FragmentManager.getFragment() 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142907/