再次单击 Listview 的项目时,AlertDialog 损坏
Posted
技术标签:
【中文标题】再次单击 Listview 的项目时,AlertDialog 损坏【英文标题】:The AlertDialog broken when click the item of Listview again 【发布时间】:2018-04-27 12:17:33 【问题描述】:我想在列表视图上显示新工作服务器的信息。当我点击某个项目时,它会再次搜索网络,返回一些数据,在对话框中显示它们。我使用了两个 AsyncTasks 来实现它。但是,当我单击该项目两次(单击该项目一次即可)时,它坏了。我调试后发现,第二次它甚至根本没有进入 itemclicklistener 方法。无法修复错误...非常感谢任何帮助。 这是部分代码。首先是onitemclicklistener
private class lvVoteItemOnItemClickListener implements AdapterView.OnItemClickListener
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
HashMap<String, String> map = (HashMap<String, String>) lvVoteItem.getItemAtPosition(arg2);
if (clickID != Integer.parseInt(map.get("id")))
clickID = Integer.parseInt(map.get("id"));
new VoteAccountTask().execute(map.get("id"));
else
new AlertDialog.Builder(VoteSummaryActivity.this).setTitle(res)
.setIcon(null)
.setView(null)
.show();
String temp = "";
其次,显示对话框AsyncTask
public class VoteAccountTask extends AsyncTask<String, Void, String>
protected String doInBackground(String... param)
return searchVoteAccountWebservice(Integer.parseInt(param[0]));
@Override
protected void onPostExecute(String result)
//votedetail.itemID + signal + votedetail.vID + signal + votedetail.itemName + signal + votedetail.ifUserDefine + signal + votedetail.creater +signal + votedetail.createDate
super.onPostExecute(result);
res = setStringsByWebString(result, VoteSummaryActivity.this.getString(R.string.datasetserStr1), VoteSummaryActivity.this.getString(R.string.datasetserStr2));
new AlertDialog.Builder(VoteSummaryActivity.this).setTitle(res)
.setIcon(null)
.setView(null)
.show();
【问题讨论】:
放你的logcat 【参考方案1】:Asynctask 被简单地执行而不检查之前的执行。不阻塞用户界面。因此,您的按钮、textView 或任何可点击的东西都可以在您每次点击时触发异步任务。
在相同的情况下我会采用两种方法;
-
Show Progress Dialog
在 preExecute 方法中设置 item clickable=false,然后在 postExecute 中设置为 true
【讨论】:
Serhat Türkman,感谢您的帮助。我试过你的建议。设置项目可点击=false。但问题仍然存在。我无法在几秒钟内单击该项目。第一次点击会弹出对话框,几秒就退出Activity。 Asynctask的onPostExecute弹出AlertDialog,却发现无法再次弹出对话框。还是没找到原因。以上是关于再次单击 Listview 的项目时,AlertDialog 损坏的主要内容,如果未能解决你的问题,请参考以下文章
单击 Listview 中的项目时,如何在新活动中从 Firebase 检索数据?
单击 ListView 项目时如何加载 Firebase DB 值的详细活动