【问题标题】:Android ProgressDialog "Spinner" disappear(doesn't show up)Android ProgressDialog“Spinner”消失(不显示)
【发布时间】:2016-10-31 15:00:55
【问题描述】:

我正在开发一个安卓应用程序,我需要从互联网上获取数据。 我在 Homepage.java 中声明了一个“私有进度对话框”。 在 onCreate() 方法中,调用函数

 dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while...", true);

并创建另一个线程来获取数据,并在finally块中调用

 "dialog.dismiss()"

整个 onResume() 代码如下所示。

@Override
protected void onResume(){
    super.onResume();
    Log.e(TAG, "onResume");
    dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while..", true);

    /******Start fetching data.******/
    Thread getDataThread = new Thread() {
        @Override
        public void run() {
            try {
                try {
                    getData();
                } catch (JSONException e) {
                    alert_error();
                    e.printStackTrace();
                } catch (IOException e) {
                    alert_error();
                    e.printStackTrace();
                } finally {
                    dialog.dismiss();
                }
            } catch (SQLException e) {
                alert_error();
                e.printStackTrace();
            } catch (ExecutionException e) {
                alert_error();
                e.printStackTrace();
            } catch (InterruptedException e) {
                alert_error();
                e.printStackTrace();
            }finally{
                dialog.dismiss();
            }
        }
    };
    getDataThread.start();
}

起初,这很好用。(旋转器显示) 但是在某些时候(我不记得什么时候了),对话框仍然有效,但微调器消失了 如下图所示(红线处应为spinner显示处) Spinner is gone

对话框仍然有效,但是从这个应用程序的任何地方调用的所有 ProgressDialog,微调器都消失了。(甚至没有出现)

如果我将获取数据从互联网部分更改为休眠 10 秒 如下图所示

@Override
protected void onResume(){
    super.onResume();
    Log.e(TAG, "onResume");
    dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while...", true);

    /******Start fetching data.******/
Thread getDataThread = new Thread() {
        @Override
        public void run() {

            try {
                sleep(10*1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                dialog.dismiss;
            }
        }
    };

    getDataThread.start();

}

微调器仍然没有出现。

我认为这可能与我的项目中的全局设置或值有关,我只使用一种方法而不是 super.onCreate 和 setContentView 创建了一个空活动 我打了电话 "ProgressDialog 对话框 = ProgressDialog.show(Homepage.this, "123", "456", true);"

并且微调器仍然没有出现!

但如果我创建一个新项目并添加相同的代码,它就可以工作!

提前致谢!

【问题讨论】:

  • 将您的课程发布到您正在打开微调器并获取数据的位置,以便提供帮助。
  • 在此处显示您的代码
  • 已添加代码。由于此应用程序的隐私问题和安全问题,我无法显示其余部分。但是除了这个activity(Homepage.java)之外,任何其他activity都面临同样的问题,那就是spinner不见了。
  • 其余部分与 ProgressDialog 无关。
  • 您在显示微调器时遇到问题,但未包含与此相关的代码。您只显示获取数据代码。你在哪里填充微调器显示该代码。

标签: android android-layout progressdialog android-progressbar


【解决方案1】:

我认为问题出在您的手机设置上,我曾经遇到过同样的问题,您需要做的是:

转到手机设置中的开发者选项。

打开过渡(在我的情况下,我将它们关闭以使手机快速运行)

重新启动应用程序,希望微调器会出现。

更新:

或者您可以为此目的尝试像 Material Dialogs 这样的库,它是我的最爱之一,您需要做的就是

编译

compile 'com.afollestad.material-dialogs:core:0.8.6.0'

然后你想在哪里显示对话框

new MaterialDialog.Builder(this)
    .title(R.string.progress_dialog)
    .content(R.string.please_wait)
    .progress(true, 0)
    .show();

您可以找到更多信息here 以进一步自定义它和使用详细信息。

希望对你有帮助

【讨论】:

  • 我检查了一下,它似乎已经打开了。如果我创建一个新项目,将显示微调器。但是这个项目有几十个活动和许多设置和属性,将所有这些文件切换到新项目需要很多时间。还是谢谢!
  • 顺便说一句,无论我在 HTC ONE 还是模拟器上运行,微调器都不会出现。
  • 试试这个dialog = ProgressDialog.show(Homepage.this, "Connecting", "Please wait for a while...", true, true);
  • 也不起作用。不过谢谢!真的很感激。
  • 很高兴我能提供帮助,始终将答案标记为完整并为好的答案投票,这样如果其他人有同样的问题,他们就会知道在哪里找到解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
相关资源
最近更新 更多