onbackpressed()

  • Antworten:15
Marc
  • Forum-Beiträge: 44

09.02.2011, 12:10:36 via Website

Hallo Gemeinde,

ich wollt mal fragen muss man die methode onbackpressed() ähnlich wie activitys in der manifest.xml eintragen??? weil jedesmal wenn ich der methode eine aufgabe zuweise passiert nichts ausser das er das programm beendet.

hab schon viele verschiedene probiert aber er macht trotzdem immer das selbe

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

09.02.2011, 12:21:38 via Website

onbackpressed gibt es glaub ich erst ab 2.0 oder 2.1

deshalb wird deine app auch abstürzen mit einem verifyerror im logcat

swordiApps Blog - Website

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 12:30:06 via Website

ja ich weiss das es erst ab 2.0 gibt ist auch nicht das problem mein Emulator ist auch 2.1
und ne fehlermeldung gibts auch nicht deshalb dachte ich das der Compiler die methode vllt garnicht erst nutzt

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

09.02.2011, 12:34:24 via Website

es gibt mit sicherheit eine fehlermeldung

es keinen fehler ohne fehlermeldung => logcat (google bitte wenn du das nicht kennst )

swordiApps Blog - Website

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 13:30:05 via Website

nee das war mehr aus faulheit;-)

bin auch schon ein schritt weiter jetzt ruft der die auf wie er soll nur bekomme ich dann ein force close

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 13:35:39 via Website

jup der holt die alte view scheinbar nicht aus der History so wie er es soll

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 16:18:07 via Website

hab nun ein anderes problem wollt jetzt aber nicht extra nen neuen thread öffnen.

ich habe mir eine Activity mit mehreren Buttons und einer Tabbar wenn ich nun auf ein Button drücke öffnet er die neue Activity und die tabbar bleibt auch bestehen soweit sogut wenn ich nun auf die Backtaste drücke kommt ein force close. kurz zur erklärung hab um die Tabbar zu erhalten die alte View mit der neuen einfach ersetzt. Vorher habe ich mithilfe eines Arrays eine History angelegt um danach wieder die vorherige view zu laden wenn man den Back button betätigt. hab im Debugger auch geschaut er trägt beide ein die 1. und die 2. View wenn ich allerdings auf der 2. View bin und dann back drücke kommt ein force close wo er normalerweise die vorherige View laden sollte.
die Logcat gibt mir als error aus:

02-09 15:16:04.630: ERROR/AndroidRuntime(1405): Uncaught handler: thread main exiting due to uncaught exception
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.addViewInner(ViewGroup.java:1861)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.addView(ViewGroup.java:1756)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.addView(ViewGroup.java:1736)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:217)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.Activity.setContentView(Activity.java:1633)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at de.it.Hauptseite.back(Hauptseite.java:132)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at de.it.Systemhaus.onBackPressed(Systemhaus.java:40)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.Activity.onKeyDown(Activity.java:1781)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.KeyEvent.dispatch(KeyEvent.java:1037)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.Activity.dispatchKeyEvent(Activity.java:2043)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.widget.TabHost.dispatchKeyEvent(TabHost.java:275)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:748)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1655)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1102)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.Activity.dispatchKeyEvent(Activity.java:2038)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1631)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2368)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2338)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.view.ViewRoot.handleMessage(ViewRoot.java:1641)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.os.Handler.dispatchMessage(Handler.java:99)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.os.Looper.loop(Looper.java:123)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at android.app.ActivityThread.main(ActivityThread.java:4363)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at java.lang.reflect.Method.invokeNative(Native Method)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at java.lang.reflect.Method.invoke(Method.java:521)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-09 15:16:04.660: ERROR/AndroidRuntime(1405): at dalvik.system.NativeStart.main(Native Method)

kann mir einer erklären was das problem ist???

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 16:29:49 via Website

jup das hab ich auch gesehen ich versteh nur nicht wo genau er meint ich soll die methode aufrufen in meiner back methode????

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

09.02.2011, 16:39:02 via Website

Der view den du einhängst wurde schonmal verwendet.
D.h. er hat einen parent, also einen Container in dem er drin hing.

Aus diesem Container, musst du ihn erst entfernen, bevor du ihn in einen anderen Container einhängen kannst.

Er ist quasi ein bisschen monotheistisch was das angeht :D

Antworten
Marc
  • Forum-Beiträge: 44

09.02.2011, 16:42:16 via Website

ah ok verstehe:D
werd ich gleich mal probieren mal sehen obs bei mir hinhaut:wink:


thx

Antworten
Marc
  • Forum-Beiträge: 44

10.02.2011, 12:18:35 via Website

so hab das mal probiert allerdings hat sich nichts geändert er gibt mir immernoch die Fehlermeldung aus habe es so probiert:

ViewGroup vg = (ViewGroup)v.getParent();
vg.removeView(v);

sollte doch eigentlich so gehen oder was mache ich falsch????

Antworten
Marc
  • Forum-Beiträge: 44

10.02.2011, 12:38:21 via Website

die meldung ist exakt die gleiche

v ist die View zu der ich dann zurück will
hab die in die onclick methode eingebaut so das wenn ich den Button drücke er die aktuelle View löscht und dann zur zweiten geht das wenn ich dann den Backbutton betätige sollte die 1. eigentlich nicht mehr im Container sein oder sehe ich das falsch???

Antworten