【问题标题】:Disable POSITIVE_BUTTON ("Continue") for 5 secs禁用 POSITIVE_BUTTON(“继续”) 5 秒
【发布时间】:2011-08-12 23:16:20
【问题描述】:

我的应用程序启动时会显示一个警报弹出窗口。我希望用户通读它,所以我想将继续按钮灰显 5 秒,然后启用它以便用户继续。


 if (alertDialog == null) {
     alertDialog = new AlertDialog.Builder(this).setPositiveButton("Continue",
                    new AlertDialog.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {
                             //continue with the app
                         }
                    }).create();
                    alertDialog.setTitle("My Title");
                    alertDialog.setView(myView);
                }
                if ((!alertDialog.isShowing())) {
                    alertDialog.show();
                    alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
                }

将按钮设置为 false 后,我无法将其设置回 true。我尝试使用 Thread.sleep(5000l) 并创建自己的对话框。他们都没有工作。我怎样才能实现我的目标?

谢谢, 阿卡什

【问题讨论】:

    标签: android button timeout visibility android-alertdialog


    【解决方案1】:

    用户代码回调完成后,所有 UI 元素都会一次性渲染。这就是为什么仅仅添加延迟没有帮助。

    您可能想要启动一个线程或一个AsyncTask,其中doInBackground 方法正在倒计时(可能在一个循环中,因此您可以在ok 字段中显示一个计数器),然后在onPostExecute 中启用该按钮

    伪代码:

    MyAsyncTask extends AsyncTask {
       doInBackground() {
          for (int i = 5; i > 0 ; i ++) {
              publishProgress (i );
              Thread.sleep(1000);
          }
       }
    
       onProgressUpdate(int i ) {
            okButton.setText(i);
       }
    
       onPostExecute() {
           okButton.setText("Ok");
           okButton.enable();
       }
    }
    

    【讨论】:

    • 谢谢,这很有魅力。但是,有没有办法多次执行 AsyncTask ?当用户启动游戏时,这很好用,他会阅读弹出窗口。但是在这之间,如果他再次进入主菜单并再次启动游戏(实际上并未退出游戏),则会直接显示继续按钮。如果我在 onClick 方法中调用 myAsyncTask.execute(),它会抛出异常说(任务只能执行一次)。有没有办法多次运行任务?谢谢
    • 可以,每次新建一个MyAsyncTask即可:new MyAyncTask().execute();
    • 啊,没关系解决它,我没有调用 new MyAsyncTask().execute,而是从一个实例调用它。所以,现在一切都很好并且已修复。非常感谢海科。
    • 啊也没有刷新页面,我的错。最终做了同样的事情。
    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    相关资源
    最近更新 更多