所以我设法解决了从捆绑中检索信息的问题,但我不得不做一些我认为很奇怪的事情。我首先尝试的方法是:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
list = savedInstanceState.getInt("listmenu");
}
这就是我将信息放入捆绑并调用活动的方式:
Intent myIntent = new Intent(MainActivity.this, NewActivity.class);
myIntent.putExtra("listmenu", R.menu.listmenu);
MainActivity.this.startActivity(myIntent);
但那没用。它会在第3行崩溃,我尝试getInt的列表(我无法找到原因,但它没有用)。
然后经过一些谷歌搜索,我试着这样做:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
list = extras.getInt("listmenu");
}
在我看来,像getIntent()。getExtras()只会返回savedInstanceState。但如果是这种情况,那么我的第一种方法就可以了。所以我必须误解saveInstanceState是什么,或getIntent()是什么,所以有人可以解释这两件事之间的区别是什么?
答案 0 :(得分:2)
如果活动被销毁然后重新创建,即在配置更改时,将bundle传递给onCreate()。如果要在重新创建活动时将数据保存,则需要覆盖onSaveInstanceState。该包将传递给onCreate和onRestoreInstanceState。
您包含的第二个代码块对于读取传递给新开始活动的包是正确的。这澄清了什么吗?最好的办法是阅读the Activity doc.
中每个的描述