当我单击位于另一个类中的Dialog的Accept按钮时,如何执行另一个类的方法?

时间:2016-01-27 11:10:58

标签: java android class android-alertdialog

这个片段在我的MainActivity.java中,它调用我的类名为tools.java的“newdrawing()”方法。

public void onClick(View v) {
    String color = null;

    switch (v.getId()){

        case R.id.newdraw_a:
            tools buttons = new tools(this);
            buttons.newdrawing();
            break;

“newdrawing()”方法是一个对话框,要求用户添加另一个绘图或取消。当用户单击“Accept”时,我想从另一个名为“canvas_class.java”的类中调用一个方法。

    public class tools extends View{

    public canvas_class drawing;

    public tools(Context context) {
            super(context);
        }

    public void newdrawing(){
        final AlertDialog.Builder newDialog = new AlertDialog.Builder(this.getContext());
        newDialog.setTitle("New Drawing?");
        newDialog.setMessage("You will overwrite all your current drawings. Are you sure you want to add another drawing?");
        newDialog.setPositiveButton("Accept", new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog, int which){
                dialog.dismiss();
                drawing.newdrawing();
            }
        });
        newDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        newDialog.show();

    }

}

现在,我想问一下我在tools.java中的代码有什么问题,当我点击Accept时它会强制关闭。谢谢。

我的canvas_class看起来像这样

public class canvas_class extends View {

private Canvas drawCanvas;

public canvas_class(Context context, AttributeSet attrs) {
    super(context, attrs);
    setupDrawing();
}

public void newdrawing(){
    drawCanvas.drawColor(0, PorterDuff.Mode.CLEAR);
    invalidate();

}

2 个答案:

答案 0 :(得分:0)

您最有可能获得NullPointerException

绘图为空,因此抛出异常,请初始化

canvas_class绘制变量,以便它不会抛出异常

答案 1 :(得分:0)

我不知道他们是否会这样做。是合法的,或许其他人可以帮助你,但你的工具的构造者' class可能是这样的:

public tools(Context context) {
   super(context);
   drawing = new canvas_class(context, this.attrs);
}

最好用大写命名类:

class Tools
class CanvasClass

我希望这会有所帮助。