13

Sono nuovo nello sviluppo di Android.Come terminare l'attività del genitore dall'attività figlio

Ho creato un'attività principale (-> A), che ha 4 pulsanti. Uno dei 4 pulsanti è il tasto EXIT.

Avvio un'altra attività (-> B), facendo clic sul pulsante ESCI. Questo apre 'B'Attività attraverso un intento di' A'Attività.

L'attività "B" contiene - Uscire? Pulsante Sì & Nessun pulsante.

Se conferisco finish(), onclick del pulsante - si esce da 'B'Activity. Voglio finire 'B' & 'A'.

Ho anche provato A.finish() -> questo non viene riconosciuto e si traduce in sintassi/errore semantico.

Apprezzerei molto l'aiuto qui.

P.S: sto utilizzando il telefono versione Android-2.2 e non mi piace utilizzare ActivityManager per risolvere questo problema.

risposta

36

tenta di avviare l'attività bambino con

startActivityForResult(intent, REQUEST_EXIT); 

Nell'attività bambino

case R.id.quit: 
    setResult(RESULT_OK, null); 
    finish(); 

Nell'attività genitore

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (requestCode == REQUEST_EXIT) { 
     if (resultCode == RESULT_OK) { 
      this.finish(); 

     } 
    } 
} 
+0

Questo ha aiutato - grazie mille !! – sudhishkr

+0

Funziona se l'attività principale non viene visualizzata. Voglio dire, ho un pulsante che avvia un'altra attività. su questo pulsante clicco Anche io finisco l'attività corrente e il suo genitore – hasan83

+0

Questo metodo funzionerà finché l'attività figlio è stata avviata nell'attività padre usando startActivityForResult e onActivityResult è definita in parent. –

6

uso startActivityForResult() in Attività A per l'avvio di attività B e onActivityResult() in A solo finish() Attività A. In Attività B sul tasto premuto solo finish()Attività B.

+0

grazie Georgy ha spiegato lo stesso - ho usato la sua sezione di codice nella mia. – sudhishkr

5

Si può terminare l'attività genitore dall'attività bambino come ...

In Parent ....

startActivityForResult(new Intent(Parent.this, Child.class), ACTIVITY_CONSTANT); 

E sovrascrivere il metodo OnActivityForResult (...) in Parent.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode == ACTIVITY_CONSTANT) 
    { 
     finish(); 
    } 
} 

Quando si chiama finish() sull'attività figlio, termina anche padre.

+0

Grazie - funziona – sudhishkr

Problemi correlati