android - 显示 ProgressDialog 并在一段时间后调用 OnBackPressed()
问题描述
ProgressDialog应该显示 5 秒,之后OnBackPressed()应该执行。目前ProgressDialog从未出现在屏幕上。如果我将 OnBackPressed() 放在委托进度对话框中,则会显示,但我会收到错误消息,即OnBackPressed()应该从 MainThread 执行。我能做些什么?
private async SomeAsyncMethod()
{
await ShowProgressDialog();
......
}
private Task ShowMessage()
{
var progressDialog = ProgressDialog.Show(this, "Bestandskorrektur", "Bestandskorrektur wird ausgeführt! Bite warten...", true);
new Thread(new ThreadStart(delegate
{
Thread.Sleep(5000);
RunOnUiThread(() => progressDialog.Hide());
OnBackPressed(); // Gives error.
})).Start();
return Task.CompletedTask;
}
更新:基于答案的解决方案:
var pd = ProgressDialog.Show(this, "Bestandskorrektur", "Bestandskorrektur wird ausgeführt! Bitte warten...", true);
var h = new Handler();
void action()
{
RunOnUiThread(() => pd.Hide());
OnBackPressed();
}
h.PostDelayed(action, 5000);
解决方案
尝试使用如下所示的 Handler().postDelayed() -
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//hide progressbar
onBackPressed();
}
}, 5000);
推荐阅读
- c++ - 非 void 函数不返回任何值
- flutter - 我想知道如何将来自 Flutter Web 的图像上传到 Firebase 存储
- python - 使用键/值过滤字典并按列表排序
- javascript - 如何为相同的参数只执行一次函数
- python - aws sagemker 到 aws s3 文件保存而不首先保存本地 PYTHON?
- python - TypeError: 在第 92 行,只能将 size-1 数组转换为 Python 标量
- android - PubNub Android 推送通知未按令牌过滤
- discord - Discord Py 发送实时 Python 输出
- javascript - 如何根据后端api的数据定义前端的数据类型?
- docker - 在centos 7中启动docker ce服务时出错