Mechanizm „onActivityResult” Androida nie działa
Mam prosty i frustrujący problem z prostą aplikacją. Mam dwa działania - A i B. Aktywność A otwiera działanie B na kliknięcie przycisku. Zadanie B ma dwa „końce”: jeśli użytkownik kliknie B. Wróć, jeśli tylko skończysz i wróci do A, jeśli użytkownik kliknie przycisk B.OK, działanie B zostanie zakończone, ale przed tym ustawia wynik „OK”, więc działanie A może zostać zamknięte zbyt.
Oto pseudo kod 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();
}
Działanie B robi to tak:
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//some other code...
finishOK();
}
});
private void finishOK() {
setResult(RESULT_OK, new Intent());
finish();
}
Problem polega na tym, że to nie zadziała - kiedy nacisnę „btnOK” B powinno się skończyć, A powinien „złapać” wynik i skończyć, ale to po prostu nie nastąpi. Czego mi brakuje?