2013-10-18 13 views
5

ich eine Tätigkeit für Ergebnis nennen:Android, finish() schließt Anwendung insead Aktivitäts

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); 
} 

Jetzt in meinem Details.class i zurück zur vorherigen Aktivität erhalten rufen:

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

Und dann meine 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(); 
} 

Aber um wieder in meine vorherige Klasse zurückzukehren, wird die Anwendung ohne Fehlerprotokolle geschlossen. Wenn ich die Home-Taste drücke, um zu meiner vorherigen Anwendung zu gehen, kann ich zu meiner Anwendung gehen und dann bin ich in meiner vorherigen Aktivität, aber das ist definitiv nicht so, wie es funktionieren soll.

Ich habe auch versucht, nicht onBackPressed() zu ändern, oder einfach finish() in onBackPressed() schreiben, aber nichts hat funktioniert.

Ich habe nicht android:noHistory="true"

Mit meiner anderen Aktivität eingestellt (die excatly den gleichen Code verwendet), es funktioniert perfekt (CODE_LOGIN).

Kann mir jemand helfen?

+0

Können Sie teilen auch den Code für Ihre „onActivityResult“ in der ersten Aktivität zu benutzen? –

+0

versuchen, super.onBackPressed im unteren Bereich von onBackPressed() hinzuzufügen und Parameter aus dem neuen Intent() zu entfernen. – Vijju

+0

Rufen Sie 'finish()' nach 'startActivityForResult' auf? – Doomsknight

Antwort

1

Ändern Sie setResult(RESULT_OK, returnToOffers); zu setResult(RESULT_OK); und entfernen Sie die Absicht returnToOffers. Ich empfehle auch, finish() durch super.onBackPressed() für zukünftige Kompatibilität zu ersetzen.

Wie in Android Lik-M-Aid (oder was auch immer die nächste Version ist), entscheiden sie sich für einen speziellen Rotglüh-Effekt, wenn ein Benutzer eine Aktivität mit der Zurück-Taste abbricht, müssen Sie nicht aktualisieren App, um es zu unterstützen.

+0

Ich habe den Code wie Sie sagten geändert, aber es funktioniert immer noch nicht. – user1053864

+0

Können Sie Ihr Manifest zur Frage hinzufügen und darauf hinweisen, welche Aktivität nicht richtig funktioniert? Das Problem könnte da drin sein. – Tenfour04

2

Vielleicht haben Sie in AndroidManifest die erste Aktivität als Android: noHistory = "true" deklariert?

2

Ich habe meinen Fehler gefunden. Irgendwo tief in meinem Code habe ich versehentlich finish() aufgerufen, also habe ich global zweimal finish() aufgerufen, was zum Schließen der Anwendung führt.

Dank für Sie und die Beratung helfen super.onBackPressed()