我在这一行得到NullPointerException
:
ImageButton sb = (ImageButton) findViewById(R.id.imageButton2);
sb.setOnClickListener(new OnClickListener() { //error on this line
public void onClick(View v) {
Intent intent = new Intent(AlarmClock.this,SettingsActivity.class);
startActivity(intent);
}
});
我检查了setContentView()
,它引用了具有imageButton2
的正确布局文件,如下所示:
<ImageView
android:id="@+id/imageButton1"
android:layout_width="0dip"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:layout_weight="0.275"
android:scaleType="fitCenter"
android:src="@drawable/bell_icon" />
这是崩溃报告:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.moosa.alarmclock/com.moosa.alarmclock.AlarmClock}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3689)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.moosa.alarmclock.AlarmClock.updateLayout(AlarmClock.java:260)
at com.moosa.alarmclock.AlarmClock.onCreate(AlarmClock.java:220)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
最大的问题是:我在GingerBread手机或ICS模拟器上找不到错误。似乎这个问题主要发生在已发布报告的崩溃报告的Galaxy S3上。
请帮帮我,因为这是我第一次发布的应用程序。
答案 0 :(得分:2)
如果您有多个布局文件使用不同的屏幕尺寸或方向,S3可能会加载其中一个文件,其中您的ImageButton具有不同的ID,或者完全丢失。
这会导致空值并导致崩溃。
答案 1 :(得分:-1)
请放入,如果它是
ImageButton sb =(ImageButton)findViewById(R.id.imageButton2); if(sb!= null)
sb.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(AlarmClock.this,SettingsActivity.class);
startActivity(intent);
}
});
否则它会在运行时崩溃。