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.

questionAnswers(1)

yourAnswerToTheQuestion