java - 如何每 5 秒在值之间切换 TextView
问题描述
我不知道使用线程是否是我想要实现的实践,所以请随意修改你希望的代码。
我正在尝试在我的应用程序中实现一个功能,其中 aTextView
切换到 1 值,然后每 5 秒恢复一次初始值。我在一个线程上实现了以下使用:
layoutDate.setText(firstNumber);
Thread numberSwitch = new Thread() {
@Override
public void run() {
while(!isInterrupted()) {
try {
Thread.sleep(5000);
runOnUiThread(new Runnable () {
@Override
public void run() {
layoutDate.setText(secondNumber);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
numberSwitch.start();
我尝试在嵌套layoutDate.setText(firstNumber)
之后和之后添加,但它仍然无法按我的意愿工作。runUiOnThread
run
我想实现以下目标:
解决方案
您可以将 Handler 与可运行对象一起使用。
private TextView textView;
private Handler handler;
在你的onCreate()
textView = findViewById(R.id.tv_bt_msg);
textView.setText("secondNumber");
handler = new Handler();
//Change the textview after 5 seconds
handler.postDelayed(runnable, 5000);
可运行以每 5 秒更改一次文本
private Runnable runnable = new Runnable() {
@Override
public void run() {
String currentString = textView.getText().toString();
if(currentString.equals("secondNumber")){
currentString = "firstNumber";
}else{
currentString = "secondNumber";
}
final String tempString = currentString;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(tempString);
}
});
//Change the textview again after 5 seconds
handler.postDelayed(runnable, 5000);
}
};
使用它来删除回调
handler.removeCallbacks(runnable);
推荐阅读
- ios - 主线程检查时UILabel类别块属性崩溃
- python-3.x - 难以理解每个变量存储在内存中的位数
- nginx - 如何使用 nginx 将 Next.js 应用程序部署到子路径?
- flutter - Flutter Firebase 注册在模拟器上工作,但不能在真正的 apk 上工作
- ios - SwiftUI WebKit WKWebView:如何支持多 url
- javascript - 如何处理未捕获的错误:对象作为 React 子错误无效
- android - Android - Kotlin - Firebase Google 登录在发布应用后无法正常工作
- python - numpy - 给定二维矩阵的按列和按行求和
- python - 如何将大型数据集拆分为块并执行 fit_transform / fit_resample 和联合结果?
- python - 我在训练我的 GAN 时遇到值错误,例如:“ValueError: Target size (torch.Size([10, 1])) must be the same as input size (torch.Size([10]))”