避免多次点击按钮

时间:2011-08-24 11:27:19

标签: java android

我有一个应用程序,其中我有两个按钮,名为'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();
    }
}

我哪里错了。如何避免多次点击或避免永不结束的对话框。非常感谢。

5 个答案:

答案 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);
                }
            });