当我在View.VISIBLE之后调用View.GONE时,ProgressBar不显示(但仅限于旧手机上)

时间:2017-11-23 16:33:56

标签: android android-progressbar

在我的MainActivity的xml文件中,我定义了一个循环ProgressBar,我想在我的应用程序进行一些加载时显示它。

private void refresh() {
    new AsyncTask<Void, Void, Void>() {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            //show progress bar and blur background
            progressBar.setVisibility(View.VISIBLE);
            mainActivityScreen.setAlpha(0.5f);
        }

        @Override
        protected Void doInBackground(Void... params) {
            /*do something */
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPreExecute();

            //hide progress bar and unblur background
            progressBar.setVisibility(View.GONE);
            mainActivityScreen.setAlpha(1.0f);
        }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}

当我在Nexus 6P上运行此代码时,它完全应该如此。我单击刷新按钮,出现progressBar(最初看不见),应用程序执行一些网络操作,当它完成后,progressBar再次消失。现在,当我在旧手机上运行相同的代码时,progressBar不会显示。起初我想也许电话无法加载progressBar,但这不是问题,因为当我忽略了这条线

progressBar.setVisibility(View.GONE);

它显示出来(但显然不会再次消失)。这也不是一个问题,因为网络操作需要大约2秒才能完成。

有人可以告诉我为什么这只适用于我的新手机,而不是较旧的手机?我为此疯狂。

提前感谢任何帮助。

编辑:xml:

<ProgressBar
    android:id="@+id/progressBar"
    style="@android:style/Widget.DeviceDefault.ProgressBar"
    android:indeterminateTint="@color/black"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:indeterminate="true"
    android:visibility="gone"/>

2 个答案:

答案 0 :(得分:1)

我看到了你的错误;

ii=1
label="α β $ii"
convert in.png -fill black -annotate "$label" out.png

在你的onPostExecute完成后,你再次调用super.onPreExecute()。

删除该行:

 protected void onPostExecute(Void aVoid) {
            super.onPreExecute();  
            //hide progress bar and unblur background
            progressBar.setVisibility(View.GONE);
            mainActivityScreen.setAlpha(1.0f);
        }

答案 1 :(得分:0)

我通过使用Handler而不是AsyncTask解决了这个问题。不知何故,这适用于所有手机。无论如何,谢谢你的帮助!