Android应用程序在开始之前崩溃

时间:2014-03-31 02:26:13

标签: java android

显示两个随机数并计算奇数和偶数转数的分数。当其中一个达到100时,应用程序停止。

这是我的应用程序的java文件

public class Board_Play1 extends Activity {

int d=0,a=0,b=0,turn=2;
Random random = new Random();
EditText diceno = (EditText) findViewById(R.id.editText1);
EditText p1 = (EditText) findViewById(R.id.editText2);
EditText p2 = (EditText) findViewById(R.id.editText3);

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.board_play1);


    diceno.setText(String.valueOf(d));  
    p1.setText(String.valueOf(a));
    p2.setText(String.valueOf(b));

    while(a!=100 && b!=100)
    {
        if(turn%2==0)
        {
            Button button = (Button) findViewById(R.id.button1);
            button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {
                    // TODO Auto-generated method stub
                    d=random.nextInt(6)+1;
                    EditText diceno = (EditText) findViewById(R.id.editText1);
                    diceno.setText(String.valueOf(d));

                }
            }); 
        }
        else
        {

            d=random.nextInt(6)+1;
            diceno.setText(String.valueOf(d));
        }

    if(turn%2==0)
            a+=d;
        else
            b+=d;

    if(a>100)
        a-=d;
    if(b>100)
        b-=d;


        p1.setText(String.valueOf(a));
        p2.setText(String.valueOf(b));
        turn++;
    }
    a=0;b=0;

}


}

它没有打开并提出错误Unfortunately your app has stopped。为什么会这样?我能改变什么?

1 个答案:

答案 0 :(得分:1)

onCreate

之后将所有内容移至setContentView
EditText diceno;
EditText p1;
EditText p2 ;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.board_play1);
diceno = (EditText) findViewById(R.id.editText1);
p1 = (EditText) findViewById(R.id.editText2);
p2 = (EditText) findViewById(R.id.editText3);

findViewById在当前视图层次结构中查找视图。您需要先将布局内容设置为活动,然后使用findViewById初始化vies。

此外,无需在按钮onClick上重新初始化editText。摆脱下面的相同

EditText diceno = (EditText) findViewById(R.id.editText1);

同时移动此

Button button = (Button) findViewById(R.id.button1);
在while循环之前

。无需每次都初始化