我正在调用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);
}
MainActivity.java
@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();
}
}
});
}
MainActivity.xml
<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" />
Textview
方法中的mProgressTextView
ImageButton
和reloadButton
recieveException(..)
未显示(settingVisibiltiy(view.VISIBLE)
)当我在设备上运行应用时。但mProgressBar可见,条件正常。 每当我点击菜单视图时,mProgressTextView
和reloadButton
都会显示。
我尝试了invalidate
和postInvalidate
方法但都徒劳无功。
我不知道该怎么回事。请赐教。
P.S。 我是Android新手