每当我点击一个选项时,for 循环会先进行,for 循环结束后,按钮文本就会被设置。为什么在 for 循环完成后设置它,而在 for 循环之前触发它?
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.refresh) {
Button button = (Button) findViewById(R.id.button);
button.setText("Running");
Toast.makeText(MainActivity.this, "We are currently running this function", Toast.LENGTH_SHORT).show();
for (int i = 0; i < 100; i++) {
try {
System.out.println("For is running" + i);
} catch (NullPointerException e) {
//Don't do shit :)
}
}
}
}
最佳答案
您的问题是您在循环中停止了 UI 线程。它将文本设置为按钮对象级别,但在这可以反射(reflect)到用户界面之前停止。如果你想执行一些需要很长时间的代码,你应该总是使用后台 Activity 。例如,参见“https://developer.android.com/reference/android/os/AsyncTask.html”。
关于java - 在 FOR 循环之前调用时未调用 Settext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793044/