java - 在 FOR 循环之前调用时未调用 Settext

标签 java android loops for-loop button

每当我点击一个选项时,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/

相关文章:

java - 移动/减少 java 杯中的冲突 - 其他问题悬而未决

java - Cassandra-Hector 单节点集群 HUnavailableException : : May not be enough replicas present to handle consistency level

java - OpenCV Android 2.4.10 上的静态初始化

android - 使用 afterTextChanged 函数时,MVVM 在 EditText 中的文本末尾设置光标

python - 从具有相同名称结构的文本文件中读取数据并将所有数据 append 到新文件中

java - 如何修复对预检请求的响应未通过访问控制检查 : No 'Access-Control-Allow-Origin' ?

android - 将自定义 ImageView 添加到主布局

Android、共享首选项和应用程序更新

java - 将 FORTRAN 循环转换为 Java

C++:终止迭代字符串 vector 的循环的最优雅方式?