【发布时间】:2014-09-08 10:29:38
【问题描述】:
我有一个列表视图,我希望当我触摸列表视图上的项目时,我的进度对话框会打开并显示加载消息。 一切都很好,但是当我触摸项目以查看对话框时,我的应用程序崩溃了。但如果我滚动列表,然后触摸项目,我的应用程序确实会出错。 当从网络收集并显示数据时,我会在下一个活动中关闭对话框。
这是我的列表视图填充鳕鱼
public void fill(final ArrayAdapter<RssParser.Item> adapter, final RssParser.Item item, final int position)
{
try
{
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
RecruitmentActivity.handler.post(new Runnable() {
@Override
public void run() {
ActivityFirst.dismissLoadingDialog();
txtTitle.setText(item.title);
txtDate.setText(item.pubDate);
txt_time.setText(item.time);
txtDescription.setText(item.description);
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
if (progress == null) {
progress = new ProgressDialog(context);
progress.setTitle("title");
progress.setMessage("loading");
progress.setCanceledOnTouchOutside(false);
progress.setCancelable(false);
}
progress.show();
G.SelectedApplication = item;
Intent intent = new Intent(G.context, Adapter_Description.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("INPUT", item.link + "");
intent.putExtra("INPUT_DESC", item.description + "");
G.context.startActivity(intent);
}
});
}
});
}
});
}
});
thread.start();
这是我的解雇方法
public static void dismissLoadingDialog() {
if (progress != null && progress.isShowing()) {
progress.dismiss();
}
}
这是我的日志
09-07 20:44:23.227:E/AndroidRuntime(1461):致命异常:主要 09-07 20:44:23.227: E/AndroidRuntime(1461): android.view.WindowManager$BadTokenException: 无法添加窗口——令牌 android.os.BinderProxy@a65f2178 无效;您的活动正在运行吗? 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.view.ViewRootImpl.setView(ViewRootImpl.java:567) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 09-07 20:44:23.227: E/AndroidRuntime(1461): ** 在 android.app.Dialog.show(Dialog.java:281) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 com.employment.app.find_work.recruitment.AdapterItems$ViewHolder$1$1$1.onClick(AdapterItems.java:89 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.view.View.performClick(View.java:4204) 09-07 20:44:23.227: E/AndroidRuntime(1461):**
在 android.view.View$PerformClick.run(View.java:17355) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.os.Handler.handleCallback(Handler.java:725) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.os.Handler.dispatchMessage(Handler.java:92) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.os.Looper.loop(Looper.java:137) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 android.app.ActivityThread.main(ActivityThread.java:5041) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 java.lang.reflect.Method.invokeNative(Native Method) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 java.lang.reflect.Method.invoke(Method.java:511) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-07 20:44:23.227: E/AndroidRuntime(1461):
在 dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
您正在使用一个不再存在的上下文。
-
你点击了线程,所以它抛出错误。当用户点击Handle中的传递数据时。
标签: android listview progressdialog