gpt4 book ai didi

android - 进度条错误

转载 作者:搜寻专家 更新时间:2023-11-01 08:05:21 25 4
gpt4 key购买 nike

我想在云端抓取数据时放一个进度条

这是我的代码:

public void progressBar() {
progress = ProgressDialog.show(this, "dialog title",
"dialog message", true);

new Thread(new Runnable() {
public void run()
{
// do the thing that takes a long time
displayView();
runOnUiThread(new Runnable() {
public void run()
{
progress.dismiss();
}
});
}
}).start();
}

和我的 displayView();方法

代码如下:

public void displayView() {

listAdapter = new ArrayAdapter<String>(this, R.layout.listview_format,
R.id.item_list,handler.getRetrieveData());
listView = (ListView)findViewById(R.id.listView2);
listView.setAdapter(listAdapter);

listView.setOnItemClickListener( new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v, int position ,
long id) {

intent = new Intent(TechiesActivity.this,ItemInfoActivity.class);
startActivity(intent);
}
});

}

我遇到了这种错误

来自 logcat 的错误:

02-25 14:39:49.980: E/AndroidRuntime(1654): FATAL EXCEPTION: Thread-10
02-25 14:39:49.980: E/AndroidRuntime(1654): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.view.View.invalidate(View.java:5139)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.widget.AbsListView.resetList(AbsListView.java:1011)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.widget.ListView.resetList(ListView.java:493)
02-25 14:39:49.980: E/AndroidRuntime(1654): at android.widget.ListView.setAdapter(ListView.java:422)
02-25 14:39:49.980: E/AndroidRuntime(1654): at com.shop.browser.TechiesActivity.displayView(TechiesActivity.java:111)
02-25 14:39:49.980: E/AndroidRuntime(1654): at com.shop.browser.TechiesActivity$1.run(TechiesActivity.java:75)
02-25 14:39:49.980: E/AndroidRuntime(1654): at java.lang.Thread.run(Thread.java:1096)
02-25 14:39:51.629: E/WindowManager(1654): Activity com.shop.browser.TechiesActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f30660 that was originally added here
02-25 14:39:51.629: E/WindowManager(1654): android.view.WindowLeaked: Activity com.shop.browser.TechiesActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44f30660 that was originally added here
02-25 14:39:51.629: E/WindowManager(1654): at android.view.ViewRoot.<init>(ViewRoot.java:247)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.Window$LocalWindowManager.addView(Window.java:424)
02-25 14:39:51.629: E/WindowManager(1654): at android.app.Dialog.show(Dialog.java:241)
02-25 14:39:51.629: E/WindowManager(1654): at android.app.ProgressDialog.show(ProgressDialog.java:107)
02-25 14:39:51.629: E/WindowManager(1654): at android.app.ProgressDialog.show(ProgressDialog.java:90)
02-25 14:39:51.629: E/WindowManager(1654): at com.shop.browser.TechiesActivity.progressBar(TechiesActivity.java:68)
02-25 14:39:51.629: E/WindowManager(1654): at com.shop.browser.TechiesActivity.onClick(TechiesActivity.java:198)
02-25 14:39:51.629: E/WindowManager(1654): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 14:39:51.629: E/WindowManager(1654): at java.lang.reflect.Method.invoke(Method.java:521)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.View$1.onClick(View.java:2067)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.View.performClick(View.java:2408)
02-25 14:39:51.629: E/WindowManager(1654): at android.view.View$PerformClick.run(View.java:8816)
02-25 14:39:51.629: E/WindowManager(1654): at android.os.Handler.handleCallback(Handler.java:587)
02-25 14:39:51.629: E/WindowManager(1654): at android.os.Handler.dispatchMessage(Handler.java:92)
02-25 14:39:51.629: E/WindowManager(1654): at android.os.Looper.loop(Looper.java:123)
02-25 14:39:51.629: E/WindowManager(1654): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-25 14:39:51.629: E/WindowManager(1654): at java.lang.reflect.Method.invokeNative(Native Method)
02-25 14:39:51.629: E/WindowManager(1654): at java.lang.reflect.Method.invoke(Method.java:521)
02-25 14:39:51.629: E/WindowManager(1654): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-25 14:39:51.629: E/WindowManager(1654): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-25 14:39:51.629: E/WindowManager(1654): at dalvik.system.NativeStart.main(Native Method)

我不知道为什么会出现错误,我是 android 编程的新手,请帮助我并提前致谢。

最佳答案

只要在runOnUiThread方法里面调用DisplayView方法就可以了

public void progressBar() {
progress = ProgressDialog.show(this, "dialog title",
"dialog message", true);

new Thread(new Runnable() {
public void run()
{
// do the thing that takes a long time
runOnUiThread(new Runnable() {
public void run()
{
displayView();
progress.dismiss();
}
});
}
}).start();
}

关于android - 进度条错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15061525/

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