1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Tom299, 02.03.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Hallo,

    ich hab seit einer Woche ein ganz komisches Phänomen und bin heute halbwegs dahintergekommen. Kanns mir jedoch nicht erklären. Und ne richtige Lösung hab ich auch noch nicht gefunden.

    Grob gesagt, ich frage den BackButton (onKeyDown ...) ab und führe dort eine Plausi durch (Werte auf Gültigkeit überprüfen).
    Sollte die Plausi fehlschlagen, muß der Anwender ein Bild als Beweis machen. Dazu erstelle ich einen Dialog, in dem er wählen kann, ob er das Bild machen will oder abbrechen:
    Code:
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, INTENT_CAPTURE_IMAGE_PLAUSI);
    
    Und jetzt kommt das kuriose: in onActivityResult bekomm ich das Bild, was ich speichere und versuche dort, die Activity zu beenden -> MeineActivity.this.finish

    Was passiert? Die Activity wird beendet, aber es wird direkt eine 2. Activity (die gleiche) wieder gestartet. Aber warum?

    Dann hab ich das ganze nochmal genau angeschaut (Activity Lifecycle) und gesehen, daß zuerst onActivityResult, danach erst OnResume ausgeführt wird.

    Ok, hab ich also in onActivityResult ein Flag gesetzt (doFinish) und in onResume frag ich das ab, und wenn true dann MeineActivity.this.finish.

    Und was passiert wieder? Genau, die Activity wird beendet und gleich wieder neu gestartet und ich weiß nicht wieso.

    Ziel ist es, daß nach dem Bild machen die Daten gespeichert werden und die Activity beendet wird -> BackButton wurde ja deswegen schon benutzt.

    Das einzige, was ich jetzt hinbekommen habe ist, mein Flag im onKeyDown abzufragen. Das bedeutet, nach dem Bild machen lande ich wieder in meiner Activity und muß nochmals Back drücken, dort kann ich dann wie erwartet die Activity mit MeineActivity.this.finish bzw. finish beenden. Aber warum funktioniert das hier und nicht in onResume oder in onActivityResult? Ich kapier das einfach nicht ...
     
  2. Tom299, 02.03.2012 #2
    Tom299

    Tom299 Threadstarter Android-Experte

    Übrigens: wenn ich nen anderen Plausi-Check einbaue, der einfach irgendwelche Eingaben prüft, also kein Intent startet, dann kann ich auch an jeder Stelle die Activity verlassen mit MeineActivity.this.finish. ...
     
  3. Tom299, 02.03.2012 #3
    Tom299

    Tom299 Threadstarter Android-Experte

    Neuste Erkenntnis: Wenn ich das Bild mache (Querformat) und vor dem Speichern das Handy ins Hochformat drehe (meine Anwendung läuft nur im Hochformat) dann klappt das Beenden so wie ich es erwarte. Speichere ich aber das Bild im Querformat, wird meine Activity beendet und gleich wieder gestartet. Das ist doch ein schlechter Witz, oder? ...
     
  4. the_alien, 02.03.2012 #4
    the_alien

    the_alien Android-Lexikon

    Deine Activity wird zuerst in Landscape gestartet und dann eigentlich beendet und in Portrait neu erstellt.
    Du beendest also die Activity, die sowieso beendet werden soll.
     
  5. Tom299, 02.03.2012 #5
    Tom299

    Tom299 Threadstarter Android-Experte

    Nein, all meine Activities werden explizit in Portrait gestartet, nie in Landscape.
    Code:
    android:screenOrientation="portrait"
    
    Das einzige, was in Landscape gestartet wird, ist das Kamera-Intent. Meine Activity/ies danach sind wieder im Portrait. Das ist ja das komische, meine Activities werden NIE gedreht bzw. sind nicht drehbar.

    Habe zum Testen mal
    Code:
    android:configChanges="orientation|keyboardHidden"
    
    eingefügt und im Code überschrieben:
    Code:
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    	super.onConfigurationChanged(newConfig);
    	System.out.println("### onConfigurationChanged");
    }
    
    Die Methode wird aber nie aufgerufen ...
     
  6. the_alien, 02.03.2012 #6
    the_alien

    the_alien Android-Lexikon

    Das macht nichts. Du kannst eine Activity auch mit screenOrientation="landscape" starten und wenn der Lockscreen Portrait ist wird sie beim entsperren kurz in portrait erstellt, dann direkt gekillt und wieder auf landscape umgestellt.



    Ich hätte jetzt erwartet, dass das hilft...
     
  7. Tom299, 02.03.2012 #7
    Tom299

    Tom299 Threadstarter Android-Experte

    Ich habe jetzt mal den Versuch gemacht und meine Activity beendet bevor ich das Kamera-Intent starte. Wenn ich von der Kamera zurückkomme wird meine Activity aber nicht mehr erstellt, sondern ich lande in der Activity davor. Hätte jetzt aber erwartet, daß meine Activity wieder erstellt wird. Irgendwas ist da wirklich komisch ...
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] App startet nicht... Android App Entwicklung 10.09.2017
[ERLEDIGT] Bitmap von Activity an Activity übergben Android App Entwicklung 03.09.2017
[OFFEN] Activity als Dialog - RecyclerView funktioniert nicht mehr Android App Entwicklung 14.08.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[ERLEDIGT] AVD startet nicht unter Linux Android App Entwicklung 05.06.2017
[GELÖST] Nach AS Update Fehler Error running app: Default Activity not found Android App Entwicklung 16.05.2017
[GELÖST] Übergabe an zweite Activity Android App Entwicklung 11.05.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Intent mit Daten (putExtra) zu anderer Activity Android App Entwicklung 14.02.2017
Bestätigungsdialog in der Activity Android App Entwicklung 19.12.2016
Du betrachtest das Thema "Activity finish startet Activity wieder ..." im Forum "Android App Entwicklung",