gpt4 book ai didi

java - 2秒后点击一个按钮

转载 作者:行者123 更新时间:2023-12-04 14:46:56 25 4
gpt4 key购买 nike

当我点击一个按钮时,应该在 2 秒后以编程方式点击另一个按钮。

Helper.setTimeout(() -> {
_view.findViewById(R.id.turbineStandBy).performClick();
}, 2000);

当我运行这段代码时,我得到了这个异常:

Only the original thread that created a view hierarchy can touch itsviews.

public static void setTimeout(Runnable runnable, int delay){
new Thread(() -> {
try {
Thread.sleep(delay);
runnable.run();
}
catch (Exception e){
System.err.println(e);
}
}).start();
}

我认为我必须重写方法 run() 但我如何才能在我的 setTimeout() 方法中做到这一点?

最佳答案

Only the original thread that created a view hierarchy can touch itsviews.

异常告诉您必须在主线程中运行Runnable。为此,您可以使用 Looper.getMainLooperActivity#runOnUIThread(参见 runOnUiThread vs Looper.getMainLooper().post in Android)。

以下代码是结构示例(您可能还需要做一些修改)。

使用Looper.getMainLooper:

public void setTimeout(Runnable runnable, int delay) {
new Handler(Looper.getMainLooper()).postDelayed(runnable, delay);
}

使用Activity#runOnUIThread:

public void setTimeout(Activity activity, Runnable runnable, int delay) {
new Thread(() -> {
try {
Thread.sleep(delay);
activity.runOnUIThread(runnable);
}
catch (Exception e){
System.err.println(e);
}
}).start();
}

(注意:我不知道你是否应该给方法加上static修饰符。)

显然,在您的情况下,您想要延迟,使用 Looper.getMainLooper 结合 Handler#postDelayed 看起来更聪明。

关于java - 2秒后点击一个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69847063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com