android - 为什么SwipeRefreshLayout的setRefreshing()方法,只有在Handle中才能起作用?
大家讲道理
大家讲道理 2017-04-17 17:15:46
0
3
645

比如我想用SwipeRefreshLayout在界面第一次加载进来时先自动刷新一次。

private SwipeRefreshLayout mRefreshLayout;
mRefreshLayout.setRefreshing(true);

这样不起作用,显示不出加载条。
但是交给handler就可以?

private SwipeRefreshLayout mRefreshLayout;
mHandler.post(new Runnable() {
    @Override
    public void run() {
        mRefreshLayout.setRefreshing(true);
    }
});
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(3)
迷茫

最初に Zhihu からの回答を再投稿します。これは、onCreate での setRefreshing の呼び出しが無効である理由を説明しています:
著者: Xiaobo
リンク: https://www.zhihu.com/question/35422150/answer/62784161
出典: Zhihu
著作権は作者に帰属します。商業的転載の場合は、著者に連絡して許可を得てください。非商業的転載の場合は、出典を明記してください。

リーリー

setRefresh を呼び出した時点ではビューの初期化が完了していないため、最も簡単な方法は、post を使用してキューに参加し、気軽にデモを作成し、コードを追加することです。

リーリー

setRefreshing はアニメーションのみを表示することに注意してください。自動的に更新する場合は、onRefresh を手動で呼び出す必要があります。そうでない場合は、onRefresh のタスクの後にあります。実行が早すぎると、リフレッシュアニメーションがキャンセルされません。

いいねを押す +0
小葫芦

これはアクティビティのライフサイクルに関連している必要があります。これをハンドラーに配置すると、初期化後にページが正しく更新されるようになります。

いいねを押す +0
小葫芦

SwipeRefreshLayout の更新は、完全にロードされるまでは機能しません。ソース コードを確認してください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート