Problem mit startActivityForResult()

lordzwieback

lordzwieback

Erfahrenes Mitglied
210
Moin,

folgendes Szenario:
Activity A = MainActivity
Activity B = QRActivity

Im Normalfall funktioniert beides super. Ich habe auf A einen Menüeintrag, welcher einen Intent sendet und B aufruft. Auf B befindet sich ein Button, welcher die Kamera startet, mich ein Bild machen lässt und danach den fotografierten QR Code einliest. Soweit alles prima.

Jetzt wollte ich auf A einen "Shortcut"-Button einrichten, der beim Klick direkt auf die Funktion aus B zugreift, welche die Kamera per Intent öffnet.

Der Code der Methode zum Kamera öffnen und Ergebnis weiterleiten:
Code:
private void takePicture() {
        try {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            File photo = new File(Environment.getExternalStorageDirectory() + "/Pfad/", "qrscan.jpg");
            imageUri = FileProvider.getUriForFile(context, "com.user.provider", photo);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(intent, PHOTO_REQUEST);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Dieser Code funktioniert super, solange ich ihn von B aus ausführe. Sobald ich versuche, ihn von A mit Hilfe von ...
Code:
public void shortcutMethod() {
        takePicture();
    }
... auszuführen, erhalte ich folgende Fehlermeldung:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

Mit Verweis auf folgende Zeile aus takePicture():
Code:
startActivityForResult(intent, PHOTO_REQUEST);

Ich hab mich schon nach einer Lösung umgeschaut, aber ich komme nicht drauf, was hier verkehrt ist. Ich meine... natürlich sehe ich, dass er anmeckert, dass ich hier irgendwo auf ein Objekt zugreife, dass null ist. Vielleicht bin ich auch nur blind/doof oder beides. Kann mir jemand auf die Sprünge helfen? Stehe aufm Schlauch...

Ich rufe die "shortcut" Methode aus B in A folgendermaßen auf:
Code:
QRActivity qrActivity = new QRActivity(MainActivity.this);
qrActivity.shortcutMethod();
 
Wird startActivityForResult() aufgerufen befor die onCreate Methode deiner Activity ausgeführt wurde?

Was anderes fällt mir nicht ein was an dieser Stelle zu einer NPE führt
 
  • Danke
Reaktionen: lordzwieback
Ach Mist, vergessen hier zu schreiben, dass ich das Problem mehr oder minder gefunden hatte.

Jaiel hatte recht, ich habe an dieser Stelle in meiner App eine Funktion einer Activity außerhalb dieser aufgerufen. Diese Funktion war abhängig vom ActivityResult und da die Activity nicht gestartet wurde, bekam ich die NPE.
Trotzdem danke für den Tipp, Jaiel. :)
 

Ähnliche Themen

S
Antworten
4
Aufrufe
994
Sempervivum
S
B
Antworten
4
Aufrufe
486
bb321
B
R
Antworten
3
Aufrufe
1.618
Ritartet
R
Zurück
Oben Unten