java - 如何跳出通过从另一个按钮单击一个按钮而启动的 for 循环

标签 java android for-loop

我通过单击按钮开始执行for循环。现在我希望当单击另一个按钮时,我之前开始的 for-loop 的执行应该停止,并且我想在这个 for-loop 时检索计数器的值停止执行。我怎样才能实现这个目标?

public void clickStart(View view) {
        TextView textView = findViewById(R.id.textView);
        int counter = 0;
        for (int i=0;i<1500;i++) {
            counter = counter + 10;
            textView.setText(counter);
        }
    }

public void clickComplete(View view) {
    //Write code to stop executing for loop in clickStart()
}

最佳答案

因此,这并不完全是如何从外部停止 for-loop 的答案(您已经收到其他用户的答案),但在查看您的问题后,您似乎尝试在 TextView 中显示一个以 10 秒递增的计数器,并使用 for 循环 进行一些延迟。

我想指出,您的for循环将在几毫秒内完成执行,即一旦您单击按钮开始循环,您的textview将显示计数器的最终值在您的情况下是 15000

如果我对您需要的延迟的假设是正确的,您可以使用处理程序并实现如下所示:

首先在您将使用它们的 Activity 或 fragment 中将它们声明为全局变量。

TextView textView;
final Handler handler = new Handler();
Runnable runnable;
int counter;  //for the +10 counter you were originally using
int count;    //for number of times to execute

Textview 需要从多个方法调用,因此是全局使用。

现在在onCreate()方法中您可以编写以下代码:

textView = findViewById(R.id.textView);
runnable = new Runnable() {
    public void run() {
        if (count <= 1500) {
            textView.setText(String.valueOf(counter));
            count++;
            counter += 10;
            handler.postDelayed(this, 500);
          //500 milliseconds for half a second delay change this as you require
        } else {
            handler.removeCallbacks(this);
        }
    }
};

run() 方法内部是确定在上述延迟之后要执行的内容的代码。

现在假设您知道如何在按钮上使用 onClickListeners,您的 startClick 方法应如下所示:

public void startClick(View v) {
        counter = 0;
        count = 0;
        handler.post(runnable);
    }

因此,如果您不希望它在可运行之前的 onCreate 中的启动函数之外重置初始化值,那么每次单击启动计数器都会重置为 0。最后,clickComplete 方法应该只是停止可运行程序,如下所示:

public void clickComplete(View v) {
        handler.removeCallbacks(runnable);
    }

请告诉我这是否对您有帮助。

关于java - 如何跳出通过从另一个按钮单击一个按钮而启动的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353179/

相关文章:

javascript - 我可以使用循环来优化我的代码吗?

java - 执行应用程序时出现问题

java - 在 Android 上调用返回 JSON 响应的 HTTP Web API 调用的最有效方法是什么?

android - EditText Int number 验证 ID 号 0-1000

Python 挑战 #2 - For 循环问题

c++ - 为什么 for 循环不能定义两个范围的变量?

java - 将 jar 添加到 Ant 构建

java - 在 Eclipse 中调试 Maven WAR 项目?

java - 当CPU非常繁忙时,我的多线程java程序出现意外异常

java - 在 GWT 上使用谷歌地图时出现问题