我通过单击按钮开始执行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/