2010-06-10 11 views
1

je dois avoir deux activités dans une application Android qui peut être commuté entre eux avec la persistance de l'interface utilisateur comme suit:Activités Android UI persistance

  1. Activité A lance Activité B.

  2. Les déclencheurs de l'utilisateur quelques changements d'interface utilisateur dans l'activité B.

  3. rendement activité B à l'activité a (par un appel à onBackPressed() ou quelque chose de similaire)

  4. Activité A relancements Activité B.

Je souhaite que les modifications apportées à l'étape 2 pour être visible à l'étape 4.

J'ai essayé d'utiliser la balise d'activité singleInstance sur l'activité B à pas profiter. Je préférerais également une solution plus élégante que d'écrire simplement toutes les propriétés d'un objet dans un fichier ou une table SQLite. Il semble que ce comportement doit être facilement réalisable étant donné qu'Android le fait automatiquement pour les appels vers onBackPressed() où l'interface utilisateur de l'activité parente est enregistrée.

Toute aide est très appréciée.

Répondre

1

Activité A Activité B lance

. Lance l'activité B à partir de l'activité A en utilisant startActivityForResult.

utilisateur déclenche des changements dans l'interface utilisateur Activité B

.

activité retourne B à l'activité A (par un appel à onBackPressed() ou quelque chose similaire)

Intent intent = new Intent(); 
        intent.putExtra("change_value1", change1); 
        intent.putExtra("change_value2", change2); 
        setResult(RESULT_OK, intent); 
        finish(); 

Activité A Activité RELANCE B.

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     /* 
     * Gets invoked on finish() from ActivityB.class 
     */ 
     super.onActivityResult(requestCode, resultCode, data); 

     switch(requestCode){ 
     case 0: 

      if(resultCode == RESULT_OK){ 
       String change1, change2; 
        change1 = data.getStringExtra("change_value1"); 
       change2 = data.getStringExtra("change_value2"); 
       Intent intent = new Intent(ActivityA.this, ActivityB.class); 
           startActivity(intent); 
      } 
     } 
    } 

Vous pouvez en savoir plus sur les intentions here.

+1

Merci pour votre réponse. J'espérais toujours une approche plus propre. Intuitivement, je m'attends à ce que l'un existe à cause de la façon dont les poignées Android retournent à l'activité parente.Je suppose que c'est la meilleure façon d'y aller maintenant. Merci pour votre aide. – aakash

+0

@aandroid - C'est assez intuitif si vous êtes familier avec la gestion des événements. Vous lancez toujours l'activité via un "Intent", rien de nouveau là-bas. L'activité A gère simplement les résultats de l'activité B via un gestionnaire de rappel. –