Java Android应用程序在对话框按钮单击时崩溃

Java Android应用程序在对话框按钮单击时崩溃,java,android,Java,Android,我试图在按下按钮时关闭一个对话框,但每次按下按钮,应用程序都会崩溃 public class CanvasPaint extends Activity implements OnClickListener { final Button widthbtn = (Button) findViewById(R.id.widthbtn); final Button widthpopBtn = (Button) findViewById(R.id.widthpopBtn); f

我试图在按下按钮时关闭一个对话框,但每次按下按钮,应用程序都会崩溃

public class CanvasPaint extends Activity implements OnClickListener {
    final Button widthbtn = (Button) findViewById(R.id.widthbtn);
    final  Button widthpopBtn = (Button) findViewById(R.id.widthpopBtn);

    final Context context = this;

    final Dialog widthDialog = new Dialog(context);

    widthbtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

                widthpopBtn.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        widthDialog.dismiss();
                    }
                });
                widthDialog.show();
        }
    });
}

这是一些初始代码。为什么要在单击侦听器中设置单击侦听器?应该更像

widthbtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            widthDialog.show();
    }
});

widthpopBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
            widthDialog.dismiss();
    }
});

对话框布局未正确膨胀,因此,
widthpopBtn
将为空。尝试按如下方式放大布局:

LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.your_dialog_layout, null);
Button widthpopBtn = (Button) dialogView.findViewById(R.id.widthpopBtn);

请检查您的LogCat并查看堆栈跟踪:@jyoon第二个onclick用于对话框中的按钮如果第二个在对话框中,您需要正确地膨胀布局。请参阅:当我这样做时,当widthbtn或widthpopBtn为空时,应用程序将使pon加载崩溃。正如上面已经提到的@commonware一样,检查您的logcat/堆栈跟踪。此外,如果发布的代码是项目中的实际代码,则显示的对话框将完全为空。