Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Fehler ohne Sinn? java.lang.RuntimeException: Unable to start activity ComponentInfo
ich bin zwar kein Profi, aber ich habe hier einen Fehler vor mir der bei ca 70% meiner AppNutzer auftaucht! Immer derselbe! Auf meinem Handy funktioniert alles :/
Erstmal hier der Fehler:
Code:
java.lang.RuntimeException: Unable to start activity ComponentInfo{m4rc.de.dichtometer/m4rc.de.dichtometer.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
at android.app.ActivityThread.access$700(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at m4rc.de.dichtometer.MainActivity.calc(MainActivity.java:162)
at m4rc.de.dichtometer.MainActivity.onCreate(MainActivity.java:60)
at android.app.Activity.performCreate(Activity.java:5372)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
... 11 more
Aus dem Fehler hab ich 2 Dinge entnommen:
at m4rc.de.dichtometer.MainActivity.calc(MainActivity.java:162)
at m4rc.de.dichtometer.MainActivity.onCreate(MainActivity.java:60)
Mit dem Rest kann ich nichts anfangen...
at m4rc.de.dichtometer.MainActivity.calc(MainActivity.java:162)
In dieser Zeile steht folgendes: TextView bier05tv = (TextView) findViewById(R.id.output05); bier05tv.setText("" + bier05);
In Eclipse wird die ID gefunden und zugeordnet! Ich habe keine Fehler und auch "bier05" wird ordentlich definiert:
int bier05 = getSharedPreferences("bier05", MODE_PRIVATE).getInt("bier05", 0);
Der andere Fehler den ich herausgefiltert habe (Zeile 60) ist eine "Verlinkung" auf "calc()"
Da sich der erste Fehler in calc() befindet, gehe ich davon aus, dass das nur eine Reaktion auf diesen Fehler war...
Ich würde ungern meinen kompletten Code hier im Forum teilen.
Falls es nicht anders geht, bin ich aber bereit es zutun....
Sorry @VfL_Freak, dass ich widersprechen muss, aber das entscheidende sind nicht die ersten beiden Zeilen, sondern diese hier:
Code:
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at m4rc.de.dichtometer.MainActivity.calc(MainActivity.java:162)
at m4rc.de.dichtometer.MainActivity.onCreate(MainActivity.java:60)
@M4RC2: Ich muss mich fragen, ob du schon mal Stacktraces gelesen hast, denn genauer als das hier, geht es schon nicht mehr!
Ich kenne das grundsätzliche Problem aber: Die App, die ich weiter entwickle hatte vor kurzem auch eine Reihe von Crashes, die ich nicht nachvollziehen konnte. Am Ende habe ich alle Fälle von möglichen und unmöglichen NullPointerExceptions abgefangen. der Code wurde dadurch wirklich eklig, aber am Ende hatte es keine Abstürze mehr. Immerhin etwas gutes ist bei der Aktion herausgekommen.
Naja. "bier05tv" ist dann weisste das doch schon. Ich finde es nur schräg, dass du die beide auf einer Zeile schreibst. macht es nicht leichter, durchzuschauen.
BTW: im Java-Codeclock kannst du auch die Zeilennummern explizit angeben, dann musst du nicht die ganze Klasse posten. (Steht oberhalb der "Direktantwort"-Box drüber
Der Grund ist übrigens vermutlich recht einfach: Die #calc-Methode wird vermutlich VOR der Initialisierung des UIs selbst aufgerufen.
Mein Tipp: in #onCreate, nachdem du den contentView gesetzt hast, hole alle deine TextViews etc. über findeViewById und speichere sie in private Member-Variablen (
Code:
private TextView mBier05tv;
). Und vor dem setzen testet du ob die UI schon da ist, indem du einen Check machst, ob der TextView != null ist... Einfacher geht's ja nicht
Sag mal, hast du eigentlich schon mal von CamelCase gehört? Irgendwie schreibst du deine Methoden und alles auch jedes mal anders...
Klassennamen: CamelCase
Methoden-/Variablen: camelCase