Android ProgressDialog“Spinner”消失(不显示)

时间:2016-06-29 04:40:34

标签: android android-layout progressdialog android-progressbar

我正在开发一个Android应用程序,我需要从互联网上获取数据。 我在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 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);”

并且旋转器仍然没有显示出来!

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

提前致谢!

1 个答案:

答案 0 :(得分:3)

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

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

启用过渡(在我的情况下,我关闭它们以使手机快速行动)

重新启动应用程序,希望spinner会在那里。

<强>更新

或者您可以为此目的尝试像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以进一步自定义和使用详情。

希望有所帮助