我收到了NullPointerException,但我不知道为什么。我正在使用一个ImageButton,当我点击按钮的drawable更改。我在代码中找不到问题。有人可以帮帮我吗?这是我的代码。感谢。
if(v.getId() == R.id.btn_repetir){
Drawable drawable = buttonRepeat.getDrawable();
if (drawable.getConstantState().equals(getResources().getDrawable(R.drawable.repeat).getConstantState())){
mediaPlayer.setLooping(true);
buttonRepeat.setImageResource(R.drawable.repeat_pulsado);
}
else{
mediaPlayer.setLooping(false);
buttonRepeat.setImageResource(R.drawable.repeat);
}
}
这是我的日志猫:
06-25 14:18:32.450: E/AndroidRuntime(3445): FATAL EXCEPTION: main
06-25 14:18:32.450: E/AndroidRuntime(3445): java.lang.NullPointerException
06-25 14:18:32.450: E/AndroidRuntime(3445): at my.package.com.Activity.onClick(Activity.java:238)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.view.View.performClick(View.java:2501)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.view.View$PerformClick.run(View.java:9107)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.os.Handler.handleCallback(Handler.java:587)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.os.Handler.dispatchMessage(Handler.java:92)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.os.Looper.loop(Looper.java:130)
06-25 14:18:32.450: E/AndroidRuntime(3445): at android.app.ActivityThread.main(ActivityThread.java:3835)
06-25 14:18:32.450: E/AndroidRuntime(3445): at java.lang.reflect.Method.invokeNative(Native Method)
06-25 14:18:32.450: E/AndroidRuntime(3445): at java.lang.reflect.Method.invoke(Method.java:507)
06-25 14:18:32.450: E/AndroidRuntime(3445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
06-25 14:18:32.450: E/AndroidRuntime(3445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
06-25 14:18:32.450: E/AndroidRuntime(3445): at dalvik.system.NativeStart.main(Native Method)
问题的关键是:
if(drawable.getConstantState().equals(getResources().getDrawable(R.drawable.repeat).getConstantState()))
可绘制的存在。