Android Layout无法打开

时间:2014-03-31 01:25:28

标签: java android

我在我的应用程序的一个java文件中有这段代码。

public class Board_Play1 extends Activity {

int d,a=0,b=0,turn=2;
Random random = new Random();
@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.board_play1);
    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));

                }
            }); 
        }turn++;
    }

}


}

我从另一个java文件来到这个java文件。我得到的所有问题是当这个文件没有任何while循环时,因为代码运行正常。但是,在导航到此布局时包含while循环会使屏幕变黑,并且无法进行进一步处理。如果我们按下后退按钮,我们会弹出一条消息Your application isn't respondingDo You want to close? Yes No

为什么会这样。我在while循环中包含的所有内容都是完美的。造成这个问题的原因是什么?

2 个答案:

答案 0 :(得分:0)

似乎对我来说这是一个无限循环。

int a=0, b=0;

这些值在您的代码中永远不会改变,并且您在while循环中使用它们是有条件的。

尝试类似:

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) {
                d=random.nextInt(6)+1;
                EditText diceno = (EditText) findViewById(R.id.editText1);
                diceno.setText(String.valueOf(d));
            }
        }); 
    }

    turn++;

    // a = somevalue based on what you're trying to do.
    // b = somevalue based on what you're trying to do.
}

答案 1 :(得分:0)

我认为你有一个无限循环。 while循环中的条件始终为true,因为a和b值永远不会递增。

你看到黑屏的原因是这个无限循环阻塞了主UI线程。