2013-10-18 14 views
5

io chiamo un 'attività per il risultato:Android, finitura() chiude INSEAD applicazione di attività

private static final int CODE_LOGIN = 0; 
private static final int CODE_DETAILS = 1; 

private void callDetailsActivity() { 
    Intent switchToDetailsActivity = new Intent(getApplicationContext(), Details.class); 
    switchToDetailsActivity.putExtra(TAG_ID, details.get(TAG_ID)); 
    startActivityForResult(switchToDetailsActivity, CODE_DETAILS); 
} 

Ora nel mio Details.class invito a tornare all'attività precedente:

@Override 
public void onBackPressed() { 
    setResult(RESULT_OK); 
    super.onBackPressed(); 
} 

E poi il mio onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == CODE_LOGIN) { 
       // This is for my other Activity, where the "return" works 
     } 
    } 
    updateOffers(); 
} 

Ma per tornare alla mia precedente lezione l'applicazione è chiusa senza alcun registro degli errori. Quando premo il tasto home per andare alla mia domanda precedente, posso andare alla mia applicazione e quindi sono nella mia attività precedente, ma questo non è sicuramente il modo in cui dovrebbe funzionare.

Ho anche provato a non modificare onBackPressed(), o semplicemente a scrivere finish() in onBackPressed(), ma non ha funzionato.

non ho impostato android:noHistory="true"

Con la mia altra attività (che utilizza excatly lo stesso codice), funziona perfettamente (CODE_LOGIN).

Qualcuno può aiutarmi?

+0

Puoi anche condividere il codice per la "onActivityResult" nella prima azione? –

+0

prova ad aggiungere super.onBackPressato in fondo a onBackPressed() e rimuovi i parametri dal nuovo Intent(). – Vijju

+0

Stai chiamando 'finish()' dopo 'startActivityForResult'? – Doomsknight

risposta

1

Modificare setResult(RESULT_OK, returnToOffers); a setResult(RESULT_OK); ed eliminare l'intento returnToOffers. Raccomando anche di sostituire finish() con super.onBackPressed() per compatibilità futura.

Come se in Android Lik-M-Aid (o qualunque sia la versione successiva), decidono di fare un effetto di luce rossa speciale quando un utente annulla un'attività con il pulsante Indietro, non è necessario aggiornare il proprio app per supportarlo.

+0

Ho cambiato il codice come hai detto tu, ma non funziona ancora. – user1053864

+0

È possibile aggiungere il manifest alla domanda e indicare quale attività non funziona correttamente? Il problema potrebbe essere lì. – Tenfour04

2

Forse hai dichiarato la prima attività come android: noHistory = "true" in AndroidManifest?

2

Ho trovato il mio errore. Da qualche parte nel mio codice ho chiamato per errore finish(), quindi in global ho chiamato finish() due volte, il che porta a chiudere l'applicazione.

Grazie per l'aiuto e il consiglio di usare super.onBackPressed()

Problemi correlati