我有两个活动A和B。第一次启动活动A时,它访问Intent
传递给它的内容(因为Bundle
is null
,因为它应该是第一次通过),并相应地显示信息:
CustInfo m_custInfo;
...
protected void onCreate(Bundle savedInstanceState)
{
...
Bundle bundle = (savedInstanceState == null) ? getIntent().getExtras() : savedInstanceState;
m_custInfo = (CustInfo) m_bundle.getSerializable("CustInfo");
if (m_custInfo != null
...
}
第一次运行正常。该EditText
控制和ListView
正确地填写。
现在,单击列表中的项目时,活动B开始显示详细信息:
m_custInfo = m_arrCustomers.get(pos);
Intent intent = new Intent(A.this, B.class);
intent.putExtra("CustInfo", m_custInfo); // CustInfo is serializable
// printing this intent, it shows to have extras and no flags
startActivityForResult(intent, 1);
在活动性B开始之前,框架调用A的重写onSaveInstanceState()
:
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putSerializable("CustInfo", m_custInfo);
}
在活动B中,当在操作栏中按下“向上”按钮时,我想返回到活动A,使其处于与之前相同的状态:
public boolean onOptionsItemSelected(MenuItem item)
{
if (item.getItemId() == android.R.id.home)
{
Intent intent = NavUtils.getParentActivityIntent(this);
// printing this intent, it shows to have flags but no extras
NavUtils.navigateUpFromSameTask(this); // tried finish() here but that created an even bigger mess
return true;
}
...
}
这里存在一个问题,当onCreate()
第二次进入活动A时,Bundle
参数为null
并 getExtras()
返回null
。自从onSaveInstanceState()
被调用以来,我希望Bundle
参数为non- null
。
我已经在其他网站上阅读了有关此问题的信息,并尝试了建议,但是没有任何效果。