Скрытие вида после завершения асинхронного вызова на сервер - PullRequest
1 голос
/ 06 февраля 2012

Я пытаюсь показать предварительный загрузчик, пока мой запрос к серверу ожидает ответа

, но когда я пытаюсь скрыть прелоадер с помощью 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);, прелоадер скрывается!

Большое спасибо !!

...