T
Tom299
Stammgast
- 122
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:
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 ...
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 ...