0

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()方法,它不会崩溃并且一切正常。

4

3 回答 3

2

改变这个

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

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

您在这一行中遇到了 NullPointerException。

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

于 2012-07-27T09:53:11.633 回答
2
newgame1 = (Button)dialog.findViewById(R.id.newgame1);
                   ^^^^^^  
于 2012-07-27T09:53:28.840 回答
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;
            }
        }); 
    }
于 2012-07-27T09:56:51.043 回答