我正在尝试设置Textview
的可见性,具体取决于 Retrofit 返回的响应。 onFailure
,我将可见性设置为可见tv_no_cat.setVisibility(View.VISIBLE);
但是,这不起作用。我正在使用ContentLoadingProgressBar
执行相同的操作并且它正常工作。这是我的代码
public void onFailure(Call<List<MoviesCategory>> call, Throwable t) {
tv_no_cat.setVisibility(View.VISIBLE); ////This does not work
Boolean x = tv_no_cat.getVisibility() == View.VISIBLE;
Toast.makeText(getContext(), "Network Error "+x, Toast.LENGTH_LONG).show(); //This shows true
tv_no_cat.setTextColor(Color.BLUE);
videoLoadingPb.setVisibility(View.GONE); //This works
}
我的猜测是我试图设置来自另一个线程的UI线程上的textview
。如果是这样,为什么它适用于ContentLoadingProgressBar
?
这是我的2个视图的xml
<android.support.v4.widget.ContentLoadingProgressBar
android:id="@+id/loading_categories"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:visibility="visible" />
<TextView
android:layout_below="@id/loading_categories"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No Movie Category Found"
android:id="@+id/tv_no_cat"
android:textAlignment="center"
android:layout_gravity="bottom"
android:visibility="gone"
/>
欢迎任何有关如何将textview
可见性设置为VISIBLE
的帮助。
答案 0 :(得分:1)
来自docs:
在Android上,回调将在主线程上执行......
所以这不是你的问题,我怀疑它与Retrofit有关,特别是当它适用于另一个视图时。请确保您的xml设计没有问题,并且没有其他方法会影响此视图的可见性。
答案 1 :(得分:0)
在Oncreate或其他地方注册Textview? 这段代码是你在片段活动中使用的吗?
请检查一下......
tv_no_cat =(TextView)findViewById(R.id.tv_no_cat);(内部活动)
tv_no_cat =(TextView)rootView.findViewById(R.id.tv_no_cat);(Inside Fragment)