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

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。

您包括的第二段代码对于读取传递到新开始活动的捆绑包是正确的。这可以澄清事情吗?最好的办法是阅读the Activity doc.中每个文件的描述

10-01 09:16