Я пытаюсь показать предварительный загрузчик, пока мой запрос к серверу ожидает ответа
, но когда я пытаюсь скрыть прелоадер с помощью setVisibility(View.GONE);
, он не скрывается (даже если другой контент становится видимым)
когда я запускаю функцию, которая предполагает удаление предварительного загрузчика и отображение другого контента напрямую (не в обратном вызове асинхронного запроса - это работает)
мой макет выглядит следующим образом (я удалил все ненужные вещи, такие как свойства android:text
и т. Д.):
[обратите внимание, что используемый мной загрузчик - это пользовательский вид, который я сделал (я не знаю, имеет ли он какое-либо отношение к проблеме)
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/logo" />
<views.Loader
android:id="@+id/preloader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<LinearLayout
android:id="@+id/buttonsArea"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_dance"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/another_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
обратите внимание, что используемый мной загрузчик - это пользовательский вид (я не знаю, имеет ли он какое-либо отношение к проблеме)
Мой код Java:
...
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_page);
init();
setLoading(true);
loadData();
}
private void init(){
preloader = (Loader) findViewById(R.id.preloader);
buttonsArea= (LinearLayout) findViewById(R.id.buttonsArea);
}
private void loadData(){
app.getManager().app_init(new OnAppInfoResponse(){
@Override
public void onResponse(boolean success) {
//this method runs on UI Thread through Handler
setLoading(false);
}
});
}
private void setLoading(boolean loading) {
this.loading = loading;
if(loading){
buttonsArea.setVisibility(View.GONE);
preloader.setVisibility(View.VISIBLE);
} else {
buttonsArea.setVisibility(View.VISIBLE);
preloader.setVisibility(View.GONE);
}
}
Edit:
еще страннее
когда я удаляю строку buttonsArea.setVisibility(View.VISIBLE);
, прелоадер скрывается!
Большое спасибо !!