私はdrowingアプリを書いています。次の問題が発生した時点で、「R.layout.activity_colors_prefs」の「redBtn」をクリックすると次のエラーが発生します。
08-26 03:27:31.576: E/AndroidRuntime(706): FATAL EXCEPTION: main
08-26 03:27:31.576: E/AndroidRuntime(706): java.lang.NullPointerException
08-26 03:27:31.576: E/AndroidRuntime(706): at com.example.drawview.ChooseColor$1.onClick(ChooseColor.java:43)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.view.View.performClick(View.java:4084)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.view.View$PerformClick.run(View.java:16966)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.os.Handler.handleCallback(Handler.java:615)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.os.Handler.dispatchMessage(Handler.java:92)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.os.Looper.loop(Looper.java:137)
08-26 03:27:31.576: E/AndroidRuntime(706): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-26 03:27:31.576: E/AndroidRuntime(706): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 03:27:31.576: E/AndroidRuntime(706): at java.lang.reflect.Method.invoke(Method.java:511)
08-26 03:27:31.576: E/AndroidRuntime(706): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-26 03:27:31.576: E/AndroidRuntime(706): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-26 03:27:31.576: E/AndroidRuntime(706): at dalvik.system.NativeStart.main(Native Method)
デバッグモードによると、問題は次のコマンドにあります。
- view_a.setdrawColor(Color.RED);
次のクラスで
public class ChooseColor extends Activity {
//View
private DrawingView view_a;
//Button
Button redBtn;
public int colorPref= Color.BLACK;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_colors_prefs);
redBtn = (Button) findViewById(R.id.redColr);
redBtn.setOnClickListener(myButtonListener);
view_a=(DrawingView) findViewById(R.id.drawingView);
}
public int getColorPref() {
return colorPref;
}
private OnClickListener myButtonListener = new OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.redColr:
Toast.makeText(getBaseContext(), "RED", Toast.LENGTH_SHORT).show();
view_a.setdrawColor(Color.RED);
break;
default:
break;
}
}
};
The method "setdrawColor" is the next:
public void setdrawColor(int color)
{
//create a copy of bitmap before changing the paint color
bitmap = Bitmap.createBitmap(bitmap);
canvas.setBitmap(bitmap);
paint.setColor(color);
}
「setdrawColor」は、「DrawingView」と呼ばれる他のアクティビティにあります。「DrawingView」は描画を担当し、Viewを拡張し、Activityを拡張しません。
何が問題なのか教えていただけますか?私は何が間違っているのですか?