|
|
Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 20.05.2011 21:35:17
Hi, ich lese in meiner MainActivity den Inhalt einer Datenbank wie folgt in einen Spinner ein: 1public void readIntoSpinner() 2 { 3 try { 4 myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null); 5 Cursor myCursor = myDB.rawQuery("SELECT _id, provider FROM " + MY_DB_TABLE + ";", null); 6 startManagingCursor(myCursor); 7 8 Spinner Spinner = (Spinner)findViewById(R.id.spinner); 9 myCursor.moveToFirst(); 10 11 SimpleCursorAdapter spinadapter = new SimpleCursorAdapter( 12 this, 13 android.R.layout.simple_spinner_item, 14 myCursor, 15 new String[] { "provider" }, 16 new int[] {android.R.id.text1}); 17 18 spinadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 19 Spinner.setAdapter(spinadapter); 20 21 Spinner.setPrompt(this.getResources().getString(R.string.provider)); 22 Spinner.setAdapter(spinadapter); 23 } finally { 24 25 if (myDB != null) 26 myDB.close(); 27 } 28 }
Nun möchte ich nach dem Ändern von Datensätzen in einer SubActivity (durch einen Button) die SubActiviy schließen (wie ist klar) und dabei diese Methode der MeinActivity ausführen. Jetzt ist meine Frage, wie lässt sich das am einfachsten lösen? Danke schonmal
-----
lg Ludwig > Die Regeln > Unser AppCenter > Das Buch für Einsteiger - kostenlos - Meine Fotos
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 20.05.2011 22:25:11
Die Methode einfach in die onCreate Methode setzten!! wenn ich dich richtig verstanden habe. 1@Override 2public void onCreate(....) { 3super.onCreate(...); 4setContentView(....); 5readIntoSpinner();
-----
"Hard work beats talent, when talent fails to work hard"
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 20.05.2011 22:31:28 (über AndroidPIT-App)
Danke, werde das mal probieren. Ich hab gedacht die onCreate() wird beim erstem starten ausgeführt und eigentlich müsste die ja noch "hinter" der SubActivity aktiv sein?! Aber wie gesagt, ich probiers mal ;)
-----
lg Ludwig > Die Regeln > Unser AppCenter > Das Buch für Einsteiger - kostenlos - Meine Fotos
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 20.05.2011 22:43:24
— geändert am 21.05.2011 10:56:30
Der wiedereintritt in eine Activity sollte in diesem Fall eigentlich im onResume() onRestart() erfolgen. Schau mal hierEdit: Korrektur eingefügt, war natürlich onRestart() anstelle von onResume()!
-----
lg Voss - Ach ja und noch was, die AndroidPIT-Regeln ლ(╹◡╹ლ) Android Security
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 20.05.2011 22:48:34 (über AndroidPIT-App)
|

Gelöschter Account
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 21.05.2011 07:53:14 (über AndroidPIT-App)
Genau dafür gibt es onActivityResult. Gruß Harald
-----
Tankbuch Mobil | Wuala Music Player | Wuala Sync | GaCoMo
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 21.05.2011 09:48:27 (über AndroidPIT-App)
onActivityResult das wollte ich auch vorschlagen... onCreate, onResume, etc werden auch zu anderen anlässen ausgeführt, bzw gestartet.
-----
AndroidPIT-Regeln || AndroidPIT-UserMap
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 21.05.2011 10:46:31
luhu Super, Dankeschön  Ich muss mich korrigieren .. du landest beim wiedereintritt im onRestart() .. Nicht im onResume() .. Sorry für die Verwirrung luhu, war vermutlich nicht ganz bei der Sache gestern Abend.
-----
lg Voss - Ach ja und noch was, die AndroidPIT-Regeln ლ(╹◡╹ლ) Android Security
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 21.05.2011 10:51:50
Die Implementierung von onActivityResult() benutzt man soweit ich das gelesen und verstanden habe eigentlich nur dann, wenn man von der Activity ein Resultat erwartet und auswerten möchte. Allerdings muss dann die Activity von der man zurückkehrt auch mit : startActivityForResult() aufgerufen worden sein und nicht mit dem einfacheren startActivity(). Das ist in der oben verlinkten Erklärung zum Activity LifeCycle prima mit Code-Beispiel erklärt. Letztlich muss natürlich jeder selber wissen wie seine Activitys steuert und untereinander aufruft.
-----
lg Voss - Ach ja und noch was, die AndroidPIT-Regeln ლ(╹◡╹ლ) Android Security
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 21.05.2011 19:29:39
Danke euch! onRestart() sollte das richtige für mich sein: onRestart(): ...when the current activity is being re-displayed to the user (the user has navigated back to it). Wenn ich das in der Doc richtig verstanden habe, muss die onRestart() innerhalb der onCreate() sein?
-----
lg Ludwig > Die Regeln > Unser AppCenter > Das Buch für Einsteiger - kostenlos - Meine Fotos
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 22.05.2011 00:04:00
Nein luhu, onRestart() ist eine eigenständige Methode innerhalb Deine Hauptklasse.
-----
lg Voss - Ach ja und noch was, die AndroidPIT-Regeln ლ(╹◡╹ლ) Android Security
|

Gelöschter Account
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 22.05.2011 08:40:01
— geändert am 22.05.2011 08:41:19
Der OP hat leider nicht mitgeteilt wie er seine Sub-Activity startet. Sobald ich das Wort Sub-Activity lese impliziere ich aber immer genau ein solches Szenario. Ein Returnwert ist eigentlich nicht notwendig. Sobald eine Sub-Activity mit startActivityForResult() gestartet wurde läuft die Root-Activity nach dem Beenden der Sub-Activity automatisch durch onActivityResult(). Was man dort prüft ist jedem selbst überlassen. Aber man hat immerhin die Möglichkeit festzustellen a.) was beendet wurde und b.) welchen Returnwert es gibt - muss man aber nicht ;-) Wenn OP hingegen mit startActivity() startet würde ich onResume() nehmen. In diesem Fall würde ich readIntoSpinner() in onResume() aufrufen und gleichzeitig aus onCreate() löschen - die Routine wird sonst beim ersten Start zweimal ausgeführt Gruß Harald
-----
Tankbuch Mobil | Wuala Music Player | Wuala Sync | GaCoMo
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 22.05.2011 15:24:58
Die "SubActivity" wird ganz simpel über 1startActivity(new Intent(this, PrefActivity.class));
gestartet. Ich hab das jetzt mal mit onRestart() ausprobiert: 1@Override 2 public void onRestart(){ 3 readIntoSpinner(); 4 }
Aber leider bekomme ich da einen FC: 105-22 13:21:48.046: ERROR/AndroidRuntime(369): Uncaught handler: thread main exiting due to uncaught exception 205-22 13:21:48.082: ERROR/AndroidRuntime(369): java.lang.RuntimeException: Unable to resume activity {luhu.wort.verdreher/luhu.wort.verdreher.Wortverdreher}: android.app.SuperNotCalledException: Activity {luhu.wort.verdreher/luhu.wort.verdreher.Wortverdreher} did not call through to super.onRestart() 305-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2950) 405-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965) 505-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1889) 605-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.os.Handler.dispatchMessage(Handler.java:99) 705-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.os.Looper.loop(Looper.java:123) 805-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.ActivityThread.main(ActivityThread.java:4363) 905-22 13:21:48.082: ERROR/AndroidRuntime(369): at java.lang.reflect.Method.invokeNative(Native Method) 1005-22 13:21:48.082: ERROR/AndroidRuntime(369): at java.lang.reflect.Method.invoke(Method.java:521) 1105-22 13:21:48.082: ERROR/AndroidRuntime(369): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 1205-22 13:21:48.082: ERROR/AndroidRuntime(369): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 1305-22 13:21:48.082: ERROR/AndroidRuntime(369): at dalvik.system.NativeStart.main(Native Method) 1405-22 13:21:48.082: ERROR/AndroidRuntime(369): Caused by: android.app.SuperNotCalledException: Activity {luhu.wort.verdreher/luhu.wort.verdreher.Wortverdreher} did not call through to super.onRestart() 1505-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.Activity.performRestart(Activity.java:3747) 1605-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.Activity.performResume(Activity.java:3756) 1705-22 13:21:48.082: ERROR/AndroidRuntime(369): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937)
Aber was bedeutet das "did not call through to super.onRestart()"?
-----
lg Ludwig > Die Regeln > Unser AppCenter > Das Buch für Einsteiger - kostenlos - Meine Fotos
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 22.05.2011 15:52:09
Das bedeutet schlicht, dass Du um die onRestart() funktion vernünftig zu implementieren immer den Aufruf super.onRestart(); Call in Deinen Methoden einbauen musst. Also so: 1@Override 2 public void onRestart(){ 3 super.onRestart(); 4 readIntoSpinner(); 5 }
-----
lg Voss - Ach ja und noch was, die AndroidPIT-Regeln ლ(╹◡╹ლ) Android Security
|
|
|
RE: Methode von ActivityA beim Schließen von ActivityB starten?
verfasst am 22.05.2011 15:58:18
Aaah, Danke! Jetzt funktionierts!  Ein Hoch auf Jörg und die Anderen!
-----
lg Ludwig > Die Regeln > Unser AppCenter > Das Buch für Einsteiger - kostenlos - Meine Fotos
|