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);
}