J'ai deux activités, A et B. Lorsque l'activité est commencé, il accède à l' Intent
passée (car l' Bundle
est null
, comme cela doit être la première fois), et affiche des informations en conséquence:
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
...
}
Cela fonctionne bien la première fois. L' EditText
contrôles et ListView
sont remplis correctement.
Désormais, lorsqu'un élément de la liste est cliqué, l'activité B est a commencé à montrer plus de détails:
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);
Juste avant acivity B est démarré, le cadre des appels A remplacé onSaveInstanceState()
:
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putSerializable("CustInfo", m_custInfo);
}
Dans l'activité B, lorsque le bouton est enfoncé dans la barre d'action, je veux retourner à l'activité et à ce qu'il soit dans le même état qu'il était avant:
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;
}
...
}
C'est ici que réside le problème, quand, en onCreate()
de l'activité Un deuxième temps, l' Bundle
paramètre null
et getExtras()
retours null
. Depuis onSaveInstanceState()
a été appelé, je me serais attendu à l' Bundle
paramètre de non-null
.
J'ai lu à propos de ce problème sur d'autres sites web, ont essayé les suggestions, mais rien ne fonctionne.