検索

ホームページ  >  に質問  >  本文

android - 为什么SwipeRefreshLayout的setRefreshing()方法,只有在Handle中才能起作用?

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

private SwipeRefreshLayout mRefreshLayout;
mRefreshLayout.setRefreshing(true);

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

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

全員に返信(3)返信します

  • 迷茫

    迷茫2017-04-17 17:17:46

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

    リーリー

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

    リーリー

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

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:17:46

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

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:17:46

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

    返事
    0
  • キャンセル返事