サーバーへの非同期呼び出し後のビューの非表示が完了しました。

私はサーバーへの私の要求が応答を待っている間、プレローダーを表示しようとしています

しかし、プリローダーを setVisibility(View.GONE); で非表示にしようとすると、(他のコンテンツが表示されても)非表示にならず、

プリローダーを削除し、他のコンテンツを直接表示する関数を実行すると(非同期要求のコールバックではなく動作します)

私のレイアウトは次のようになります(私は android:text のプロパティなどの無関係なものをすべて削除しました)。

[使用しているローダーは、私が作成したカスタムビューであることに注意してください(問題と関連があるかどうかわかりません)



    

 

    

        <button
            android:id="@+id/my_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/my_dance"
            />

        

        <button
            android:id="@+id/another_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    

私が使用しているローダーはカスタムビューであることに注意してください(問題と何か関係があるかどうかわかりません)

私の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);
    }
}

編集:

さらに怪我する: buttonsArea.setVisibility(View.VISIBLE); 行を削除すると、プリローダーは非表示になります。

どうもありがとうございました!!

1
現在私は別の LinearLayout を追加してこの問題を解決しましたが、これはローダーをラップするために使用しましたが、これは私にはこれを実装する悪い方法のようです
追加された 著者 Yaron U.,

答えはありません

0