startActivityForResult z trzema działaniami
Mam trzy zajęcia, nazwijmy je po prostu A, aktywność B i aktywność C
Na początku jestem na zajęciach A i uruchamiam skaner QR (działanie B) z startActivityForResult w ten sposób:
Intent i;
i = new Intent(this, QrActivity.class);
startActivityForResult(i, 1);
Po otwarciu działania B jest to kod do obsługi wyniku i powrotu do poprzedniej czynności:
public void handleDecode(Result rawResult, Bitmap barcode)
{
if (rawResult != null) {
String textResult = rawResult.getText();
if (textResult != null) {
Intent returnIntent = new Intent();
returnIntent.putExtra("result", textResult);
setResult(RESULT_OK,returnIntent);
finish();
}
//rest of the code
Teraz działa to całkowicie bez zarzutu, po ponownym otwarciu działania A wszystko działa tak, jak powinno. To wygląda tak: A -> B -> A
Problem pojawia się, gdy próbuję iść w ten sposób: A -> C -> B -> A
Użytkownik ma dwie opcje, aby rozpocząć działanie B (skaner qr) z działania A lub z działania C. Zawsze chcę obsługiwać wynik B z działaniem A, nawet jeśli użytkownik uzyskał dostęp do działania B z działania C.
Gdy otworzę Activity B (skaner qr) z działania C, tak właśnie próbowałem go rozwiązać:
Nazwałem wykończenie () w działaniu C, gdy nazywa się aktywność B:
Intent in;
in = new Intent(this, QrActivity.class);
startActivityForResult(in, 1);
finish();
A w ćwiczeniu B zamiast
Intent returnIntent = new Intent();
Mam zamiar:
Intent returnIntent = new Intent(QrActivity.this, CheckpointsActivity.class);
A po powrocie do działania nic się nie dzieje, tak jak aktywność B nigdy nie została nawet otwarta, nie wydaje się, aby wynik został osiągnięty, gdy działanie B rozpoczyna się od działania C.
Każda pomoc będzie bardzo mile widziana! Wiem, że to wszystko jest bardzo mylące, ale jeśli chcesz, mogę dodać więcej szczegółów.