gpt4 book ai didi

java - 第二次加载时进度条失败

转载 作者:行者123 更新时间:2023-11-29 06:01:42 25 4
gpt4 key购买 nike

我有一个简单的函数,它显示在获取数据时加载微调器(通常需要 7 秒左右)

private void load_data(View v)
{
task_complete = false;
progressBar = new ProgressDialog(v.getContext());
progressBar.setCancelable(false);
progressBar.setMessage("Fetching data ...");
progressBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressBar.show();

try
{
Log.v("thread", "Starting thread");
new Thread(new Runnable()
{
public void run()
{
while(!task_complete)
{
fetch_data();
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
progressBar.dismiss();
}
}).start();
Log.v("thread", "Thread finished successfully");
}
catch(Exception e)
{
Log.v("thread", "fail "+e.toString());
}
}

我遇到的问题是该函数由 onClick 通过

调用
load.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
load_data(v);
show_data(v); // shows the data on a spinner
}
});

当我第二次按下加载按钮时,出现错误。我的日志确实显示了

Starting thread
Thread finished successfully

但不知何故应用程序死于错误说

03-27 02:48:39.282: E/AndroidRuntime(956): Uncaught handler: thread Thread-9 exiting due to uncaught exception
03-27 02:48:39.293: E/AndroidRuntime(956): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
03-27 02:48:39.293: E/AndroidRuntime(956): at android.view.ViewRoot.checkThread(ViewRoot.java:2683)

如果有人能告诉我或向我解释导致错误的原因,我将不胜感激

最佳答案

问题是你的 progressBar.dismiss();在另一个线程中执行,要使其在 UI 线程中运行,请执行以下操作:

    runOnUiThread(new Runnable() {

@Override
public void run() {
progressBar.dismiss();
}
});

关于java - 第二次加载时进度条失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882873/

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