【问题标题】:How can I auto-load a popup then auto dismiss it after 3 seconds on section load?如何自动加载弹出窗口,然后在部分加载 3 秒后自动关闭它?
【发布时间】:2015-05-22 20:02:15
【问题描述】:

我正在使用名为“Navigation Drawer Activity”的 Android Studio 模板。它带有一个 ActionBar 活动和菜单中的 3 个预加载“部分”。

我正在尝试在其中一个部分打开时创建一个“加载”弹出窗口。为此,我滑动打开菜单并选择第 2 部分。

我只能弄清楚如何使用按钮和 onClick 操作来做到这一点。我不想要该按钮,但我希​​望它在该部分打开时自动运行,然后在 3 秒后关闭。到目前为止,这是我想出的:

// get button
                Button btnShow = (Button)findViewById(R.id.btn_show);
                btnShow.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
                        builder.setTitle("Connecting");
                        builder.setMessage("Please wait while we connect to your devices...");
                        builder.setCancelable(true);

                        final AlertDialog dlg = builder.create();

                        dlg.show();

                        Handler mHandler = new Handler();
                        Runnable mRunnable = new Runnable() {

                            public void run() {
                                if (dlg != null && dlg.isShowing()) dlg.dismiss();
                            }
                        };
                        mHandler.postDelayed(mRunnable, 2000);

                    }
                });

【问题讨论】:

  • 你想什么时候打开弹窗?
  • @Apurva 该部分打开或单击时。

标签: java android android-activity android-studio


【解决方案1】:

U=试试这个代码

Runnable mRunnable = new Runnable() {    
       public void run() {
          sleep(3000);
          if (dlg != null && dlg.isShowing()) dlg.dismiss();
       }
    };

【讨论】:

  • 添加后,sleep 给出错误Cannot Resolve Method Sleep(int)
  • 这似乎缺少一些信息...我认为应该是Thread.Sleep(3000); 另外,这会引发一个中断的异常。这也没有引用任何特定的部分?
【解决方案2】:

这似乎是最简单的方法。 3000ms 后打开和关闭。

final ProgressDialog progress = new ProgressDialog(this);
    progress.setTitle("Connecting");
    progress.setMessage("Please wait while we connect to devices...");
    progress.show();

    Runnable progressRunnable = new Runnable() {

        @Override
        public void run() {
            progress.cancel();
        }
    };

    Handler pdCanceller = new Handler();
    pdCanceller.postDelayed(progressRunnable, 3000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多