Java Textview和ImageButton可见状态和RunOnUIThread 背景

Java Textview和ImageButton可见状态和RunOnUIThread 背景,java,android,android-runonuithread,Java,Android,Android Runonuithread,我正在调用okhttpnewcall(request).enqueue(…)方法,如果失败,我将使用监听器返回主活动,在这里我显示文本框和图像按钮,要求用户重新加载。我正在使用RunOnUIThread更改视图状态 ImageRequester.java mClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e

我正在调用okhttp
newcall(request).enqueue(…)
方法,如果失败,我将使用监听器返回主活动,在这里我显示文本框和图像按钮,要求用户重新加载。我正在使用
RunOnUIThread
更改视图状态

ImageRequester.java

mClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            mLoadingData = false;
            mLoadingDataFailed = true;
            e.printStackTrace();

           // send exception/fail response to MainActivity
            mResponseListener.recieveException(e);

        }
@Override
    public void recieveException(Exception exp) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(mFirstTime) {
                    mProgressBar.setVisibility(View.VISIBLE);
                    mProgressTextView.setVisibility(View.VISIBLE);
                    reloadButton.setVisibility(View.VISIBLE);
                }
                if (!mFirstTime) {
                    toolbarPbar.setVisibility(View.GONE);
                    mShouldReload = true;
                    invalidateOptionsMenu();
                    Snackbar.make(findViewById(android.R.id.content), "Checking your internet connection might help.", Snackbar.LENGTH_LONG).show();
                }
            }
        });
    }
<TextView
        android:id="@+id/text_progress_fail"
        style="?android:attr/progressBarStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/connectivity"
        android:textAlignment="center"
        android:gravity="center"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.501" />

    <ImageButton
        android:id="@+id/reload_button_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:src="@drawable/ic_action_refresh_dark"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_progress_fail"
        app:layout_constraintVertical_bias="0.085" />
MainActivity.java

mClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            mLoadingData = false;
            mLoadingDataFailed = true;
            e.printStackTrace();

           // send exception/fail response to MainActivity
            mResponseListener.recieveException(e);

        }
@Override
    public void recieveException(Exception exp) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(mFirstTime) {
                    mProgressBar.setVisibility(View.VISIBLE);
                    mProgressTextView.setVisibility(View.VISIBLE);
                    reloadButton.setVisibility(View.VISIBLE);
                }
                if (!mFirstTime) {
                    toolbarPbar.setVisibility(View.GONE);
                    mShouldReload = true;
                    invalidateOptionsMenu();
                    Snackbar.make(findViewById(android.R.id.content), "Checking your internet connection might help.", Snackbar.LENGTH_LONG).show();
                }
            }
        });
    }
<TextView
        android:id="@+id/text_progress_fail"
        style="?android:attr/progressBarStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/connectivity"
        android:textAlignment="center"
        android:gravity="center"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.501" />

    <ImageButton
        android:id="@+id/reload_button_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:src="@drawable/ic_action_refresh_dark"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_progress_fail"
        app:layout_constraintVertical_bias="0.085" />
MainActivity.xml

mClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            mLoadingData = false;
            mLoadingDataFailed = true;
            e.printStackTrace();

           // send exception/fail response to MainActivity
            mResponseListener.recieveException(e);

        }
@Override
    public void recieveException(Exception exp) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if(mFirstTime) {
                    mProgressBar.setVisibility(View.VISIBLE);
                    mProgressTextView.setVisibility(View.VISIBLE);
                    reloadButton.setVisibility(View.VISIBLE);
                }
                if (!mFirstTime) {
                    toolbarPbar.setVisibility(View.GONE);
                    mShouldReload = true;
                    invalidateOptionsMenu();
                    Snackbar.make(findViewById(android.R.id.content), "Checking your internet connection might help.", Snackbar.LENGTH_LONG).show();
                }
            }
        });
    }
<TextView
        android:id="@+id/text_progress_fail"
        style="?android:attr/progressBarStyle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="@string/connectivity"
        android:textAlignment="center"
        android:gravity="center"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.501" />

    <ImageButton
        android:id="@+id/reload_button_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:src="@drawable/ic_action_refresh_dark"
        android:visibility="gone"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_progress_fail"
        app:layout_constraintVertical_bias="0.085" />

问题 当我在设备上运行应用程序时,
receiveexception(…)
方法中的
Textview
ImageButton
重新加载按钮
中的
mProgressTextView
方法不会显示(
settingvisibility(view.VISIBLE)
)。但mProgressBar可以看到,并且条件正常工作。和每当我单击菜单视图时,
mProgressTextView
reload按钮都将可见。
我尝试了
invalidate
postInvalidate
方法,但都没有成功

我不知道发生了什么事。请开导我

p.S. 我不熟悉安卓系统