Der Android-Mechanismus „onActivityResult“ funktioniert nicht
Ich habe ein großes und frustrierendes Problem mit einer einfachen Anwendung. Ich habe zwei Aktivitäten - A und B. Aktivität A öffnet Aktivität B mit einem Klick auf eine Schaltfläche. Aktivität B hat zwei "Enden": Wenn der Benutzer auf B.Back klickt, wenn er gerade fertig ist und zu A zurückkehrt, wenn der Benutzer auf B.OK klickt, wird Aktivität B beendet, aber bevor das Ergebnis auf "OK" gesetzt wird, kann Aktivität A geschlossen werden auch.
Dies ist der Pseudocode für A:
btnNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//some code...
startAct(data);
}
});
private void startAct(Intent inte) {
startActivityForResult(inte, -999);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println(resultCode);
if(requestCode != -999)
return;
if(resultCode == RESULT_OK)
finish();
}
Aktivität B gefällt Folgendes:
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//some other code...
finishOK();
}
});
private void finishOK() {
setResult(RESULT_OK, new Intent());
finish();
}
Das Problem ist, dass dies nicht funktioniert - wenn ich "btnOK" B drücke, sollte A das Ergebnis "fangen" und auch beenden, aber es wird einfach nicht passieren. Was vermisse ich?