从android中的bundle中检索数据

时间:2011-10-25 23:36:48

标签: android android-intent bundle

所以我设法解决了从捆绑中检索信息的问题,但我不得不做一些我认为很奇怪的事情。我首先尝试的方法是:

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()是什么,所以有人可以解释这两件事之间的区别是什么?

1 个答案:

答案 0 :(得分:2)

如果活动被销毁然后重新创建,即在配置更改时,将bundle传递给onCreate()。如果要在重新创建活动时将数据保存,则需要覆盖onSaveInstanceState。该包将传递给onCreate和onRestoreInstanceState。

您包含的第二个代码块对于读取传递给新开始活动的包是正确的。这澄清了什么吗?最好的办法是阅读the Activity doc.

中每个的描述