Null Pointer Exception wo liegt der Fehler?

  • Antworten:8
  • Bentwortet
Superbit
  • Forum-Beiträge: 111

30.03.2014, 19:42:19 via Website

Hi,
ich suche seit Wochen verzweifelt nach meinem Fehler.

Mein Problem ist wenn ich eine bestimmte Activity starte gibt es immer eine NullPointerException und dann beendet sich der Prozess, aber das komische ist das der Fehler auftritt bevor überhaupt irgendein Stück Code der zu startenden Activity ausgeführt wird(ich habe in der Activity überall Breakpoints gesetzt aber es wird nie wegen einem dieser Breakpoints gestoppt und ich habe auch probiert die Activity direkt zu starten, also als Launchactivity)

Logcat:
103-31 16:22:26.770: D/AndroidRuntime(6848): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
203-31 16:22:26.770: D/AndroidRuntime(6848): CheckJNI is OFF
303-31 16:22:26.770: I/AndroidRuntime(6848): JNI options: '-Xjniopts:warnonly'
403-31 16:22:26.780: D/dalvikvm(6848): Trying to load lib libjavacore.so 0x0
503-31 16:22:26.790: D/dalvikvm(6848): Added shared lib libjavacore.so 0x0
603-31 16:22:26.800: D/dalvikvm(6848): Trying to load lib libnativehelper.so 0x0
703-31 16:22:26.800: D/dalvikvm(6848): Added shared lib libnativehelper.so 0x0
803-31 16:22:26.940: D/AndroidRuntime(6848): Calling main entry com.android.commands.pm.Pm
903-31 16:22:26.950: D/AndroidRuntime(6848): Shutting down VM
1003-31 16:22:26.960: D/dalvikvm(6848): GC_CONCURRENT freed 96K, 18% free 470K/568K, paused 0ms+0ms, total 3ms
1103-31 16:22:26.960: D/jdwp(6848): Got wake-up signal, bailing out of select
1203-31 16:22:26.960: D/dalvikvm(6848): Debugger has detached; object registry had 1 entries
1303-31 16:22:27.300: D/AndroidRuntime(6860): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
1403-31 16:22:27.300: D/AndroidRuntime(6860): CheckJNI is OFF
1503-31 16:22:27.300: I/AndroidRuntime(6860): JNI options: '-Xjniopts:warnonly'
1603-31 16:22:27.310: D/dalvikvm(6860): Trying to load lib libjavacore.so 0x0
1703-31 16:22:27.310: D/dalvikvm(6860): Added shared lib libjavacore.so 0x0
1803-31 16:22:27.320: D/dalvikvm(6860): Trying to load lib libnativehelper.so 0x0
1903-31 16:22:27.320: D/dalvikvm(6860): Added shared lib libnativehelper.so 0x0
2003-31 16:22:27.470: D/AndroidRuntime(6860): Calling main entry com.android.commands.am.Am
2103-31 16:22:27.470: D/dalvikvm(6860): Note: class Landroid/app/ActivityManagerNative; has 157 unimplemented (abstract) methods
2203-31 16:22:27.470: I/ActivityManager(404): Force stopping package de.moritzbrunner.flying_hamster appid=10068 user=-1
2303-31 16:22:27.470: I/ActivityManager(404): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=de.moritzbrunner.flying_hamster/.MainActivity} from pid 6860
2403-31 16:22:27.520: D/AndroidRuntime(6860): Shutting down VM
2503-31 16:22:27.520: D/dalvikvm(6860): GC_CONCURRENT freed 97K, 17% free 503K/604K, paused 1ms+0ms, total 6ms
2603-31 16:22:27.530: D/jdwp(6860): Got wake-up signal, bailing out of select
2703-31 16:22:27.530: D/dalvikvm(6860): Debugger has detached; object registry had 1 entries
2803-31 16:22:27.530: D/dalvikvm(6870): Late-enabling CheckJNI
2903-31 16:22:27.530: I/ActivityManager(404): Start proc de.moritzbrunner.flying_hamster for activity de.moritzbrunner.flying_hamster/.MainActivity: pid=6870 uid=10068 gids={50068, 1028}
3003-31 16:22:27.550: I/dalvikvm(6870): Turning on JNI app bug workarounds for target SDK version 8...
3103-31 16:22:27.560: E/jdwp(6870): Failed sending reply to debugger: Broken pipe
3203-31 16:22:27.560: D/dalvikvm(6870): Debugger has detached; object registry had 1 entries
3303-31 16:22:27.570: I/qtaguid(404): Failed write_ctrl(s 1 10068) res=-1 errno=1
3403-31 16:22:27.570: W/NetworkManagementSocketTagger(404): setKernelCountSet(10068, 1) failed with errno -1
3503-31 16:22:27.590: I/System.out(6870): Sending WAIT chunk
3603-31 16:22:27.590: W/ActivityThread(6870): Application de.moritzbrunner.flying_hamster is waiting for the debugger on port 8100...
3703-31 16:22:28.620: I/dalvikvm(6870): Debugger is active
3803-31 16:22:28.800: I/System.out(6870): Debugger has connected
3903-31 16:22:28.800: I/System.out(6870): waiting for debugger to settle...
4003-31 16:22:29.000: I/System.out(6870): waiting for debugger to settle...
4103-31 16:22:29.200: I/System.out(6870): waiting for debugger to settle...
4203-31 16:22:29.400: I/System.out(6870): waiting for debugger to settle...
4303-31 16:22:29.600: I/System.out(6870): waiting for debugger to settle...
4403-31 16:22:29.800: I/System.out(6870): waiting for debugger to settle...
4503-31 16:22:30.000: I/System.out(6870): waiting for debugger to settle...
4603-31 16:22:30.200: I/System.out(6870): waiting for debugger to settle...
4703-31 16:22:30.400: I/System.out(6870): waiting for debugger to settle...
4803-31 16:22:30.600: I/System.out(6870): waiting for debugger to settle...
4903-31 16:22:30.800: I/System.out(6870): debugger has settled (1390)
5003-31 16:22:34.980: D/AndroidRuntime(6870): Shutting down VM
5103-31 16:22:34.980: W/dalvikvm(6870): threadid=1: thread exiting with uncaught exception (group=0x40eb0930)
5203-31 16:22:35.530: E/AndroidRuntime(6870): FATAL EXCEPTION: main
5303-31 16:22:35.530: E/AndroidRuntime(6870): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.moritzbrunner.flying_hamster/de.moritzbrunner.flying_hamster.MainActivity}: java.lang.NullPointerException
5403-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
5503-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
5603-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread.access$600(ActivityThread.java:141)
5703-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
5803-31 16:22:35.530: E/AndroidRuntime(6870): at android.os.Handler.dispatchMessage(Handler.java:99)
5903-31 16:22:35.530: E/AndroidRuntime(6870): at android.os.Looper.loop(Looper.java:137)
6003-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread.main(ActivityThread.java:5041)
6103-31 16:22:35.530: E/AndroidRuntime(6870): at java.lang.reflect.Method.invokeNative(Native Method)
6203-31 16:22:35.530: E/AndroidRuntime(6870): at java.lang.reflect.Method.invoke(Method.java:511)
6303-31 16:22:35.530: E/AndroidRuntime(6870): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
6403-31 16:22:35.530: E/AndroidRuntime(6870): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
6503-31 16:22:35.530: E/AndroidRuntime(6870): at dalvik.system.NativeStart.main(Native Method)
6603-31 16:22:35.530: E/AndroidRuntime(6870): Caused by: java.lang.NullPointerException
6703-31 16:22:35.530: E/AndroidRuntime(6870): at android.content.ContextWrapper.getResources(ContextWrapper.java:89)
6803-31 16:22:35.530: E/AndroidRuntime(6870): at android.view.ContextThemeWrapper.getResources(ContextThemeWrapper.java:78)
6903-31 16:22:35.530: E/AndroidRuntime(6870): at de.moritzbrunner.flying_hamster.gameview.<init>(gameview.java:30)
7003-31 16:22:35.530: E/AndroidRuntime(6870): at de.moritzbrunner.flying_hamster.MainActivity.onCreate(MainActivity.java:42)
7103-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.Activity.performCreate(Activity.java:5104)
7203-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
7303-31 16:22:35.530: E/AndroidRuntime(6870): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
7403-31 16:22:35.530: E/AndroidRuntime(6870): ... 11 more
7503-31 16:22:35.550: W/ActivityManager(404): Force finishing activity de.moritzbrunner.flying_hamster/.MainActivity
7603-31 16:22:36.090: W/ActivityManager(404): Activity pause timeout for ActivityRecord{4141e040 u0 de.moritzbrunner.flying_hamster/.MainActivity}
7703-31 16:22:36.190: I/ActivityManager(404): No longer want com.accuweather.android.tablet (pid 2847): empty #17
7803-31 16:22:36.200: I/qtaguid(404): Failed write_ctrl(s 0 10068) res=-1 errno=1
7903-31 16:22:36.210: W/NetworkManagementSocketTagger(404): setKernelCountSet(10068, 0) failed with errno -1
8003-31 16:22:36.690: D/dalvikvm(404): GC_CONCURRENT freed 1195K, 38% free 10126K/16080K, paused 3ms+9ms, total 78ms
8103-31 16:22:46.190: W/ActivityManager(404): Activity destroy timeout for ActivityRecord{4141e040 u0 de.moritzbrunner.flying_hamster/.MainActivity}
82: E/(): Device disconnected: 1
83: E/(): Device disconnected

Quellcode(MainActivity.java):
1package de.moritzbrunner.flying_hamster;
2
3import java.util.List;
4
5import android.hardware.Sensor;
6import android.hardware.SensorEvent;
7import android.hardware.SensorEventListener;
8import android.hardware.SensorManager;
9import android.os.Bundle;
10import android.app.Activity;
11import android.app.Dialog;
12import android.content.Context;
13import android.content.DialogInterface;
14import android.content.DialogInterface.OnDismissListener;
15import android.content.Intent;
16import android.content.SharedPreferences;
17import android.view.View;
18import android.view.View.OnClickListener;
19import android.widget.Button;
20import android.widget.TextView;
21
22public class MainActivity extends Activity implements SensorEventListener,
23 OnClickListener, OnDismissListener {
24
25 gameview thegameview;
26 private boolean firststart = true;
27 public int height;
28 public List<kisten_normal> kistenobjlist;
29 public Mytimer timer;
30 public SensorManager sm;
31 public Sensor sensor;
32 public float sx;
33 public Dialog gameoverdialog, pausedialog;
34 private Button bzurueck, bzurueck2, bweiter;
35 private TextView tscore, thighscore;
36 private boolean isdialogactive = false;
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41 timer = new Mytimer();
42 thegameview = new gameview(this);
43 setContentView(thegameview);
44 gameoverdialog = new Dialog(this,
45 android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
46 gameoverdialog.setContentView(R.layout.gameover);
47 gameoverdialog.hide();
48 pausedialog = new Dialog(this,
49 android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
50 pausedialog.setContentView(R.layout.pause);
51 pausedialog.hide();
52 bzurueck2 = (Button) findViewById(R.id.bpausezurueck);
53 bweiter = (Button) findViewById(R.id.bpauseweiter);
54 bzurueck2.setOnClickListener(this);
55 bweiter.setOnClickListener(this);
56 bzurueck = (Button) findViewById(R.id.bgameoverzurueck);
57 tscore = (Button) findViewById(R.id.tscore);
58 thighscore = (Button) findViewById(R.id.thighscore);
59 bzurueck.setOnClickListener(this);
60 height = thegameview.height;
61 sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
62 sensor = sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
63 sm.registerListener(this, sensor, SensorManager.SENSOR_DELAY_GAME);
64 timer.settimer(1);
65 }
66
67 @Override
68 protected void onDestroy() {
69 // TODO Auto-generated method stub
70 super.onDestroy();
71 }
72
73 @Override
74 protected void onPause() {
75 // TODO Auto-generated method stub
76 super.onPause();
77 thegameview.pausethread();
78 firststart = false;
79 }
80
81 @Override
82 protected void onResume() {
83 // TODO Auto-generated method stub
84 super.onResume();
85 thegameview.resumethread();
86 }
87
88 public int getWidth() {
89 return thegameview.getWidth();
90 }
91
92 public int getHeight() {
93 return thegameview.getHeight();
94 }
95
96 public void newkistenN(int lueckenx, int lueckenbreite) {
97 thegameview.newkistenN(lueckenx, lueckenbreite);
98 }
99
100 @Override
101 public void onAccuracyChanged(Sensor sensor, int accuracy) {
102 // TODO Auto-generated method stub
103
104 }
105
106 @Override
107 public void onSensorChanged(SensorEvent event) {
108 sx = event.values[0];
109
110 }
111
112 public float getdensity() {
113 float density = thegameview.getdensity();
114 return density;
115 }
116
117
118 public void gameover() {
119 thegameview.pausethread();
120 tscore.setText("Score: " + String.valueOf(timer.objekt.minutes) + ":"
121 + String.valueOf(timer.objekt.sec));
122 SharedPreferences pref = getSharedPreferences("Square_Bird", 0);
123 if (((timer.objekt.minutes * 60) + timer.objekt.sec) > pref.getInt(
124 "highscore", 0)) {
125 SharedPreferences.Editor editor = pref.edit();
126 editor.putInt("highscore", (timer.objekt.minutes * 60)
127 + timer.objekt.sec);
128 }
129 thighscore.setText("Highscore:" + String.valueOf(timer.objekt.minutes)
130 + ":" + String.valueOf(timer.objekt.sec));
131 gameoverdialog.show();
132 }
133
134 @Override
135 public void onClick(View v) {
136 switch (v.getId()) {
137 case R.id.bgameoverzurueck:
138 Intent menue = new Intent(this, menue.class);
139 gameoverdialog.dismiss();
140 startActivity(menue);
141 this.finish();
142 break;
143 case R.id.bpausezurueck:
144 Intent menue2 = new Intent(this, menue.class);
145 gameoverdialog.dismiss();
146 startActivity(menue2);
147 this.finish();
148 break;
149 case R.id.bpauseweiter:
150 dialogstate();
151 }
152
153 }
154
155 @Override
156 public void onDismiss(DialogInterface dialog) {
157 dialogstate();
158
159 }
160
161 @Override
162 public void onBackPressed() {
163 super.onBackPressed();
164 dialogstate();
165 }
166
167 public void dialogstate() {
168 if (firststart != true) {
169 if (isdialogactive) {
170 pausedialog.hide();
171 thegameview.resumethread();
172 isdialogactive = false;
173 } else if (!isdialogactive) {
174 thegameview.pausethread();
175 pausedialog.show();
176 isdialogactive = true;
177 }
178 }
179 }
180
181}

— geändert am 31.03.2014, 16:27:18

Nichts ist unmöglich außer die Unmöglichkeit

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.03.2014, 20:39:29 via App

Der code wäre hilfreich und ausserdem lgt der fehler beim ladern der recourcen in der mainactivity.java Zeile 119

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Superbit
  • Forum-Beiträge: 111

31.03.2014, 16:29:14 via Website

Hab Code gepostet und Logcat aktualisiert, weil ich den Code verändert habe.

Nichts ist unmöglich außer die Unmöglichkeit

Antworten
impjor
  • Forum-Beiträge: 1.793

31.03.2014, 16:33:44 via Website

Sieh dir doch mal folgendes in deinem Code an:
java.lang.NullPointerException at de.moritzbrunner.flying_hamster.gameview.<init>(gameview.java:30)

Dann solltest du selber den Fehler finden.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Superbit
  • Forum-Beiträge: 111

31.03.2014, 17:54:06 via Website

Ich glaube ich habe mehr als einen Fehler, den Fehler den impjor gepostet hat habe ich behoben(zumindest kommt diese Fehlermeldung im Log nicht mehr), aber wo liegt hier der Fehler:
103-31 17:45:48.040: E/AndroidRuntime(7384): at de.moritzbrunner.flying_hamster.MainActivity.onCreate(MainActivity.java:55)

Errors in Log:
103-31 17:45:48.040: E/AndroidRuntime(7384): FATAL EXCEPTION: main
203-31 17:45:48.040: E/AndroidRuntime(7384): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.moritzbrunner.flying_hamster/de.moritzbrunner.flying_hamster.MainActivity}: java.lang.NullPointerException
303-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
403-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
503-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread.access$600(ActivityThread.java:141)
603-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
703-31 17:45:48.040: E/AndroidRuntime(7384): at android.os.Handler.dispatchMessage(Handler.java:99)
803-31 17:45:48.040: E/AndroidRuntime(7384): at android.os.Looper.loop(Looper.java:137)
903-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread.main(ActivityThread.java:5041)
1003-31 17:45:48.040: E/AndroidRuntime(7384): at java.lang.reflect.Method.invokeNative(Native Method)
1103-31 17:45:48.040: E/AndroidRuntime(7384): at java.lang.reflect.Method.invoke(Method.java:511)
1203-31 17:45:48.040: E/AndroidRuntime(7384): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
1303-31 17:45:48.040: E/AndroidRuntime(7384): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
1403-31 17:45:48.040: E/AndroidRuntime(7384): at dalvik.system.NativeStart.main(Native Method)
1503-31 17:45:48.040: E/AndroidRuntime(7384): Caused by: java.lang.NullPointerException
1603-31 17:45:48.040: E/AndroidRuntime(7384): at de.moritzbrunner.flying_hamster.MainActivity.onCreate(MainActivity.java:55)
1703-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.Activity.performCreate(Activity.java:5104)
1803-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
1903-31 17:45:48.040: E/AndroidRuntime(7384): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
2003-31 17:45:48.040: E/AndroidRuntime(7384): ... 11 more

Nichts ist unmöglich außer die Unmöglichkeit

Antworten
impjor
  • Forum-Beiträge: 1.793

31.03.2014, 18:32:51 via Website

In Zeile 55 steht bei dir:
1setContentView(thegameview);
2[...]
3bweiter = (Button) findViewById(R.id.bpauseweiter);
4[...]
5bweiter.setOnClickListener(this); //Zeile 55

bzweiter ist demnach null. Ich habe direkt auch die Zeile aufgeschrieben, in der du bzweiter einen Wert zuweißt.
Da bzweiter den Wert null zugewiesen bekommt, findet findViewById(...) die id R.id.bpauseweiter nicht. Ein paar Zeilen vorher setzt du als ContentView deine Game-View-Klasse. Deine GameView-Klasse muss dementsprechend einen Button mit der R.id.bpauseweiter enthalten. Ich denke mal, dem ist nicht so.

Ich sage dir gleich -bevor du es versuchst- du kannst nicht einfach dem GameView deine Buttons hinzufügen. Nutze doch lieber eine xml - Layout - Datei (die hast du doch bestimmt schon, nur fehlt der setContentView(...)-Aufruf für diese). Ruf dann einfach setContentView(R.layour.nameDesLayouts); aus. Dann fehlt natürlich die GameView in dem Layout. Aber auch das ist kein Problem, du kannst einfach im Layout diese hinzufügen, genau wie einen Button (und jede andere View):
1<dein.package.name.deine.GameView
2android:layout_width="..."
3...
4/>

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Superbit
  • Forum-Beiträge: 111

31.03.2014, 18:47:20 via Website

Der Button sollte eigentlich zu einem Dialog gehören("pausendialog" befindet sich ja auch im Java File)
Ich korrigiere den Fehler gleich und teste ob es geht.

— geändert am 31.03.2014, 18:47:30

Nichts ist unmöglich außer die Unmöglichkeit

Antworten
impjor
  • Forum-Beiträge: 1.793

31.03.2014, 19:03:50 via Website

Wenn der Button sich im pauseDialog befindet, musst du entsprechend Button btpause = (Button) pauseDialog.findViewById(...); benutzen.

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Superbit
  • Forum-Beiträge: 111

31.03.2014, 19:59:23 via Website

Danke habe Fehler hoben und jetzt debugge ich die restlichen Fehler

Nichts ist unmöglich außer die Unmöglichkeit

Antworten