销毁活动后:在onSaveInstanceState之后无法执行此操作

时间:2016-02-05 19:49:34

标签: android android-fragments

我收到此例外情况,我无法弄清楚原因:

  

在onSaveInstanceState之后无法执行此操作。

这是我在onCreate()内部活动时添加第一个片段的方式:

new Handler().post(new Runnable() {
        public void run() {
            final FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager
                    .beginTransaction()
                    .add(id, fragment)
                    .commit();
        }
    });

在第一个fragment内部,我有一个通向另一个fragment的按钮。我导航到另一个fragment,如下所示:

new Handler().post(new Runnable() {
        public void run() {
            final FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager
                    .beginTransaction()
                    .addToBackStack(fragment.getClass().getName())
                    .add(id, fragment)
                    .commit();
        }
    });

首次打开我的应用时,初始fragment正常显示,我可以毫无问题地导航到另一个fragment。我也可以通过调用fragment上的popBackstack()onBackPressed()来导航回Activity。无论我来回走动多少次,导航都会起作用。

如果我第一次打开应用程序,出现初始fragment,然后单击后退按钮关闭应用程序,则会出现问题。在这种情况下,当我第二次打开应用程序并单击导致另一个fragment的按钮时,我得到了该异常。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

将此添加到您的活动中。希望它能解决

private static final <T extends WhateverBound> Map<Class<T>, 
    BiFunction<T, T, Boolean>> 
    getSpecificHandlers(T t) {

    // return new HashMap<Class<T>, BiFunction<T, T, Boolean>>();
    // much easier on the eye - thanks Andy Turner
    return new HashMap<>();
}