【问题标题】:avoid multiple clicks on a button避免多次点击按钮
【发布时间】:2011-08-24 11:27:18
【问题描述】:

我有一个应用程序,其中有两个按钮,分别名为“下一个”和“上一个”。这些按钮用于浏览从 url 加载的故事。当点击按钮时,对话框显示“请等待加载数据”。当我们非常夸张地点击下一个或上一个按钮时,屏幕上会出现一个永无止境的对话框。

我是这样做的:

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();
    }
}

我哪里错了。我怎样才能避免多次点击或避免永无止境的对话。任何帮助表示赞赏。

【问题讨论】:

    标签: java android


    【解决方案1】:

    在数据完全加载或进程被取消之前,禁用“下一步”按钮。

    【讨论】:

      【解决方案2】:

      点击按钮后,对该按钮执行setEnabled(false),禁用多次点击

      【讨论】:

        【解决方案3】:

        对于其他答案,您可以在单击按钮时将布尔变量设置为 true,并在完成处理单击时将其设置为 false。

        这样您可以忽略多次点击,而不必禁用按钮,可能避免烦人的按钮闪烁。

        【讨论】:

          【解决方案4】:

          点击后放置按钮 setEnabled(false) 并在 loadAndShowNextActivity() 中关闭 pDialog.dismiss()

          【讨论】:

            【解决方案5】:
            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);
                            }
                        });
            

            【讨论】:

              猜你喜欢
              • 2013-05-08
              • 2021-08-02
              • 2017-05-23
              • 1970-01-01
              • 1970-01-01
              • 2020-06-30
              • 2012-04-05
              • 1970-01-01
              • 2013-05-18
              相关资源
              最近更新 更多