Java Android onSaveInstanceState始终为空

Java Android onSaveInstanceState始终为空,java,android,bundle,Java,Android,Bundle,考虑以下方法: @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("repertoire",rep); } 我正在使用Android Studio生成的菜单NavigationDrawer。当我回到主活动时,savedInstanceState在我的类中总是null: 公共类MainA

考虑以下方法:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("repertoire",rep);
}
我正在使用Android Studio生成的菜单
NavigationDrawer
。当我回到主活动时,
savedInstanceState
在我的类中总是
null

公共类MainActivity扩展ActionBarActivity实现NavigationDrawerFragment.NavigationDrawerCallbacks:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if( savedInstanceState != null ) {
        rep = (repertoire) savedInstanceState.getSerializable("repertoire");
            }
        setContentView(R.layout.activity_main);

        mNavigationDrawerFragment = (NavigationDrawerFragment)                      getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
        ListView vue = (ListView) findViewById(R.id.listView);
        if(rep==null){
            rep = new repertoire();
        }

        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
}

我不是100%确定,但是您不应该在onRestoreInstanceState()中还原您的活动吗?同样,我不是100%确定,但它可能会工作。

继续创建它

@Override
public void onSaveInstanceState(Bundle outState) {
    if (outState == null) {
        outState = new Bundle();
    }

    outState.putSerializable("repertoire", rep);

    super.onSaveInstanceState(outState);
}
超级方法不会做任何事情,除非将一个非null的
Bundle
传递给它,并且它的超级方法只是一个存根!视图层次将单独保存。现在,您将在
onCreate(Bundle)
onRestoreInstanceState(Bundle)
中以参数形式接收
Bundle

我的当前代码: 在onCreate中:

                  @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
              if( savedInstanceState != null ) {
                  System.out.println("back");
                  rep = (repertoire) savedInstanceState.getSerializable("repertoire");
              }
以及:

                @Override
        public void onSaveInstanceState(Bundle outState) {
            System.out.println("bibi");
            if (outState == null) {
                outState = new Bundle();
            }
            super.onSaveInstanceState(outState);
            outState.putSerializable("repertoire", rep);


        }
            @Override
            public void onRestoreInstanceState(Bundle bundle){
                System.out.println("okm");
                super.onRestoreInstanceState(bundle);
                bundle.putSerializable("repertoire",rep);
            }