onClick(View v)崩溃?

时间:2012-07-27 09:50:11

标签: android onclick

我在另一种方法中使用onClick()方法,并在调用gewinnGruen()方法时崩溃。

请帮助我知道原因:

public void gewinnGruen() {
    Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
    dialog.setContentView(R.layout.winnergreen);
    dialog.show();
    newgame1 = (Button) findViewById(R.id.newgame1);
    newgame1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            field1.setBackgroundResource(R.drawable.field0);
            place1 = 0;
        }
    }); 
}

如果没有onClick()方法,它就不会崩溃,一切正常。

3 个答案:

答案 0 :(得分:2)

更改此

newgame1 = (Button) findViewById(R.id.newgame1);

newgame1 = (Button)dialog. findViewById(R.id.newgame1);

您正在此行中遇到NullPointerException。

这是因为,您正在尝试在已创建的对话框中初始化Button,但是您没有在此处为方法提供Dialog对象。所以它查看Activity的视图并返回null,因为它无法在那里找到任何id。

答案 1 :(得分:2)

newgame1 = (Button)dialog.findViewById(R.id.newgame1);
                   ^^^^^^  

答案 2 :(得分:1)

替换你的代码
public void gewinnGruen() {

        Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.winnergreen);
        dialog.show();
        newgame1 = (Button) dialog.findViewById(R.id.newgame1);
        newgame1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                field1.setBackgroundResource(R.drawable.field0);
                place1 = 0;
            }
        }); 
    }