2013-03-14 73 views
2

我得到一個NullPointerException這行:NullPointerException異常的OnClickListener在某些手機

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的發佈報告的崩潰報告上。

請幫助我,因爲這是我第一次發佈的應用程序。

+5

你有多個佈局文件去不同的屏幕?如果是這樣,S3可以加載具有在ID一個錯字的佈局文件,或者是沒有該ID完全。 – 2013-03-14 09:18:24

+0

這可能是問題。有在res /佈局土地文件夾相同的佈局文件沒有新的元素 Thnaks一噸 – 2013-03-14 09:26:55

回答

2

如果您有多個佈局文件去與不同的屏幕尺寸或方向,在S3可加載在你的ImageButton有不同的ID這些文件中的一個,或全部丟失。

這將導致一個空值並導致您的崩潰。

+0

你發現問題在不到一分鐘 真的很感激,少... – 2013-03-14 09:40:10

+0

@MohammadShabazMoosa很高興我能幫助! – 2013-03-14 09:50:59

-1

請把如果befor它

的ImageButton SB =(的ImageButton)findViewById(R.id.imageButton2); (sb!= null)

sb.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     Intent intent = new Intent(AlarmClock.this,SettingsActivity.class); 
     startActivity(intent); 

    } 
}); 

否則它會在運行時崩潰。

+0

這並沒有真正回答這個問題,爲什麼它崩潰的副本。它只是防止崩潰,並殺死按鈕提供的任何功能。 – 2013-03-14 09:32:47

相關問題