android - FragmentManager.getFragment() 空指针异常

标签 android android-fragments android-fragmentactivity android-support-library savestate

我正在使用支持库 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)

我还尝试调用返回 nullgetFragments()。这在我看来很奇怪。

我将不胜感激!


解决方案:

我忘记在 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/

相关文章:

Android - 多次切换 RTL 与 LTR 时布局方向错误

适用于 Kotlin 的 Android Parcelable 无法正常工作

android - popBackStackImmediate 在当前 fragment 事务未添加到后台堆栈时不显示 fragment

android使用服务更新搜索栏

java - AsyncTask doInBackground 方法未调用

android - 使用 ViewPager2 将方向更改为横向时显示两 block fragment

android - 从 Fragment 调用 getActivity 会导致 App 崩溃

java - 考虑到其创建顺序,如何管理片段和 Activity ?

android - 什么是 Uri 的最佳类型转换器?

android - 自定义操作栏菜单项一键不响应