我有一个应用程序,其中我有两个按钮,名为'next'和'previous'。这些按钮用于浏览从网址加载的故事。点击按钮时,对话框显示“请等待加载数据”。当我们非常奢侈地按下下一个或上一个按钮时,屏幕上会出现一个永无止境的对话框。
我是这样做的:
public void onClick(View v) {
try {
pDialog = new ProgressDialog(StoriesListController.this);
pDialog.setIndeterminate(true);
pDialog.setIcon(R.drawable.icon_small);
pDialog.setCancelable(true);
if (isFavoriteList == true) {
pDialog.setMessage("Loading favorites...");
} else {
pDialog.setMessage("Loading data...");
}
pDialog.setTitle("Please wait");
pDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface arg0) {
if (cancelableHeavyWorker != null) {
cancelableHeavyWorker.setHandler(null);
}
finish();
}
});
pDialog.show();
if (v == next) {
if (ind < items.size() - 1) {
ind++;
loadAndShowNextActivity();
}
} else if (v == previous) {
if (ind > 0) {
ind--;
loadAndShowNextActivity();
}
}
} catch (Exception e) {
Log.e("Error", "--.OnClink Message" + e.toString());
e.printStackTrace();
}
}
我哪里错了。如何避免多次点击或避免永不结束的对话框。非常感谢。
答案 0 :(得分:3)
禁用“下一步”按钮,直到数据完全加载或进程被取消。
答案 1 :(得分:3)
点击该按钮后,对此按钮执行setEnabled(false)
,以禁用多次点击
答案 2 :(得分:2)
除了其他答案之外,您可以在单击按钮时将布尔变量设置为true,并在完成单击处理后将其设置为false。
通过这种方式,您可以忽略多次点击,而无需禁用按钮,可能会避免按钮出现恼人的闪烁。
答案 3 :(得分:0)
点击后按钮setEnabled(false)并在loadAndShowNextActivity()中关闭pDialog.dismiss()
答案 4 :(得分:0)
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialogButton.setEnabled(false);
....
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
dialogButton.setEnabled(true);
}
});