Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中从捆绑包中检索数据_Android_Android Intent_Bundle - Fatal编程技术网

在android中从捆绑包中检索数据

在android中从捆绑包中检索数据,android,android-intent,bundle,Android,Android Intent,Bundle,所以我设法解决了从bundle中检索信息的问题,但是我不得不做一些我认为很奇怪的事情。我首先尝试的方法是: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list = savedInstanceState.getInt("listmenu"); } 这就是我将信息放入捆绑包并调用活动的方式: Intent myIn

所以我设法解决了从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行崩溃,这是我试图获取int的列表(我不知道确切的原因,但它不起作用)

在谷歌搜索之后,我试着这样做:

public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            Bundle extras = getIntent().getExtras();
            list = extras.getInt("listmenu");
}

在我看来,getIntent().getExtras()只返回savedInstanceState。但如果是这样的话,我的第一种方法就会奏效。因此,我必须误解savedInstanceState是什么,或者getIntent()是做什么的,那么有人能解释一下这两件事之间的区别吗?

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


您包含的第二块代码对于读取传递给新启动活动的包是正确的。这是否澄清了问题?最好的办法是阅读

中对每一项的描述。是的,我认为这澄清了问题。因此,如果活动已经存在并且正在以某种方式恢复,我将只接收savedInstanceState?否则,我需要使用getIntent().getExtras()?如果它正在被销毁和重新创建,则不会恢复。如果您想向自己证明这一点,我建议覆盖所有这些方法,并在log.d(“lifecycle”、“onCreate()”)和log.d(“lifecycle”、“onPause()”)中加入日志调用,etc…从savedInstanceState上的javadoc:
如果活动在先前关闭后正在重新初始化,则此捆绑包包含它最近在onSaveInstanceState(捆绑包)中提供的数据。注意:否则为空。