比如我想用SwipeRefreshLayout在界面第一次加载进来时先自动刷新一次。
private SwipeRefreshLayout mRefreshLayout;
mRefreshLayout.setRefreshing(true);
这样不起作用,显示不出加载条。
但是交给handler就可以?
private SwipeRefreshLayout mRefreshLayout;
mHandler.post(new Runnable() {
@Override
public void run() {
mRefreshLayout.setRefreshing(true);
}
});
最初に Zhihu からの回答を再投稿します。これは、onCreate での setRefreshing の呼び出しが無効である理由を説明しています:
リーリー著者: Xiaobo
リンク: https://www.zhihu.com/question/35422150/answer/62784161
出典: Zhihu
著作権は作者に帰属します。商業的転載の場合は、著者に連絡して許可を得てください。非商業的転載の場合は、出典を明記してください。
setRefresh を呼び出した時点ではビューの初期化が完了していないため、最も簡単な方法は、post を使用してキューに参加し、気軽にデモを作成し、コードを追加することです。
リーリーsetRefreshing はアニメーションのみを表示することに注意してください。自動的に更新する場合は、onRefresh を手動で呼び出す必要があります。そうでない場合は、onRefresh のタスクの後にあります。実行が早すぎると、リフレッシュアニメーションがキャンセルされません。
これはアクティビティのライフサイクルに関連している必要があります。これをハンドラーに配置すると、初期化後にページが正しく更新されるようになります。
SwipeRefreshLayout の更新は、完全にロードされるまでは機能しません。ソース コードを確認してください。