我在我的应用程序的一个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 responding
。 Do You want to close?
Yes No
。
为什么会这样。我在while循环中包含的所有内容都是完美的。造成这个问题的原因是什么?
答案 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线程。