Ich habe ein Problem mit einer meiner Apps und frage mich, ob mir jemand einen Einblick geben könnte, was es verursachen könnte.
Ich erhalte eine ClassNotFoundException, die wichtige Zeile lautet
E/AndroidRuntime(21982): Verursacht durch: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in Loader dalvik.system.PathClassLoader@446fc3d0
Diese App ist seit über einem Jahr draußen und vor 2 Tagen haben mich zwei verschiedene Benutzer bezüglich dieses Problems kontaktiert, einer mit einem HTC Wildfire (2.1) und einer mit einem Samsung Galaxy S (?). Ich kann dieses Problem auf meinen Geräten (2.2 und 1.6) oder einem Emulator (2.1) nicht reproduzieren und kann nicht wirklich herausfinden, warum diese Klasse nicht vom Klassenlader gefunden werden kann. Ich habe eine Weile gegoogelt, aber ohne Erfolg, und hoffe, dass jemand Hinweise hat! Es tritt anscheinend nur auf, wenn eine Aktivität geladen wird, bei der beim Setzen des ContentView versucht wird, eine benutzerdefinierte Ansicht namens GoBoardView aufzublasen, die die View-Klasse erweitert. Diese führt nur einfache Canvas-Zeichnungen durch und verwendet keine Drittanbieter-Bibliotheken oder andere Klassen, die einen Paketnamenkonflikt oder ähnliches verursachen könnten.
Bitte helfen Sie! Falls es sich um ein Build-Problem handelt, aktualisiere ich mein SDK und ADT durch Eclipse, da es gegen 1.6 erstellt wurde und das alte ADT verwendet wurde, aber ich habe keine Ahnung, ob dies helfen wird, dachte aber, es wäre einen Versuch wert. Jegliche Ratschläge wären super, danke! (siehe unten für BEARBEITEN)
E/AndroidRuntime(21982): java.lang.RuntimeException: Aktivität ComponentInfo{couk.doridori.goigoFull/couk.doridori.goigoFull.Board} starten: android.view.InflateException: Binary-XML-Datei Zeile #14: Fehler beim Aufblasen der Klasse couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): bei android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
E/AndroidRuntime(21982): bei android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
E/AndroidRuntime(21982): bei android.app.ActivityThread.access$2200(ActivityThread.java:126)
E/AndroidRuntime(21982): bei android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
E/AndroidRuntime(21982): bei android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(21982): bei android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(21982): bei android.app.ActivityThread.main(ActivityThread.java:4603)
E/AndroidRuntime(21982): bei java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(21982): bei java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(21982): bei com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(21982): bei com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(21982): bei dalvik.system.NativeStart.main(Methode: 0)
E/AndroidRuntime(21982): Verursacht durch: android.view.InflateException: Binary-XML-Datei Zeile #14: Fehler beim Aufblasen der Klasse couk.doridori.goigo.customUI.GoBoardView
E/AndroidRuntime(21982): bei android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime(21982): bei com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
E/AndroidRuntime(21982): bei android.app.Activity.setContentView(Activity.java:1629)
E/AndroidRuntime(21982): bei couk.doridori.goigoFull.Board.onCreate(Board.java:31)
E/AndroidRuntime(21982): bei android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(21982): bei android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
E/AndroidRuntime(21982): ... 11 weitere
E/AndroidRuntime(21982): Verursacht durch: java.lang.ClassNotFoundException: couk.doridori.goigo.customUI.GoBoardView in Loader dalvik.system.PathClassLoader@446fc3d0
E/AndroidRuntime(21982): bei dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
E/AndroidRuntime(21982): bei java.lang.ClassLoader.loadClass(ClassLoader.java:573)
E/AndroidRuntime(21982): bei java.lang.ClassLoader.loadClass(ClassLoader.java:532)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.createView(LayoutInflater.java:466)
E/AndroidRuntime(21982): bei android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
E/AndroidRuntime(21982): ... 22 mehr
BEARBEITEN
Ok, während der Recherche einiger Links, die Benutzer kommentiert haben, scheint die Verwendung des falschen Kontexts für das Laden von Aktivitäten dieses Problem verursachen zu können. Ich finde das interessant, weil eine der zwei Log-Meldungen, die mir zugesendet wurden, diese Ausnahme durch
W/ActivityManager( 1222): StartActivity aufgerufen von Nicht-Aktivitätskontext; Intent.FLAG_ACTIVITY_NEW_TASK für Intent { flg=0x20000 cmp=couk.doridori.goigoFull/.Games } erzwungen
was ziemlich selbsterklärend ist - das Problem ist, dass ich keine Ahnung habe, von wo aus diese Aktivität gestartet sein könnte, wo ein Nicht-Aktivitätskontext verwendet wird, also bin ich ein wenig ratlos, ich denke, es könnte eine Art Multitasking-Merkwürdigkeit sein und es wird wieder in den Vordergrund gebracht. Dies kann anscheinend Probleme mit dem Klassenlader verursachen. Wenn dies auf dem Telefon eines Benutzers passiert wäre, kann ich nicht sehen, warum ich dies nicht reproduzieren kann (und die meisten anderen Benutzer auch nicht).
Das andere, was ich durch die Links gefunden habe, ist interessant, dass einige Leute Probleme aufgrund einer "falschen APK-Installation" hatten, die durch eine Neuinstallation gelöst werden kann, was ich die Benutzer, die das Problem hatten, ausprobieren lassen habe (was keinen Unterschied macht). Es scheint auch, dass, sobald das Problem auftritt (was beim ersten Gebrauch passiert), es bestehen bleibt.
0 Stimmen
Hast du einen Broadcast-Empfänger mit dem Intent-Filter Intent.FLAG_ACTIVITY_NEW_TASK? Dies könnte der Nicht-Aktivitätskontext sein, der versucht, eine deiner Aktivitäten zu starten.