2016-06-21 5 views
0

私のフラグメントのonResume()の1つのライナーで、hereが素晴らしく説明されているようにプログラムでプル・トゥ・リフレッシュを呼び出しています。これは私のコードです:これは私のフラグメントをリフレッシュしChris Banesがバウンドせずにプログラムをリフレッシュするように呼び出す

private PullToRefreshScrollView panelScrollView; 

@Override 
public void onResume() { 
    panelScrollView.setRefreshing();    
    super.onResume(); 
} 

、悪いユーザーエクスペリエンスを提供します(ユーザーが引っ張られ、放出された場合のように)バウンスと。
私の質問:

  1. 私はバウンスなく、同じリフレッシュを得ることができますか?
  2. なぜフラグメントがフォアグラウンドに到達したら、フラグメントのsuper.onResume()はそのフラグメントをリフレッシュしませんか?最初にPullToRefreshScrollView.setRefreshing()に電話する必要があるのはなぜですか?
+0

[元に戻す]がネイティブにサポートされています。これには第三者図書館は必要ありません。 [こちらを参照](https://developer.android.com/training/swipe/add-swipe-in​​terface.html) – Renjith

+1

SwipeRefreshLayout Sentiを使用してください。 –

+0

ありがとう!しかし、これはサードパーティ製のプル・ツー・リフレッシュと統合された「レガシー・コード」です。これは最初に、別のプル・トゥ・リフレッシュ・ソリューションと統合することなく試してみたいと考えています。 また、私の質問2をまだ理解していません。なぜ 'onResume()'が明示的な呼び出しなしでフラグメントをリフレッシュしないのですか? – Senti

答えて

1

まず、サポートプルを使用して非常に使いやすくすることをお勧めします。活動は、それべき コールsetRefreshing(真)プルのhttps://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html#isRefreshing()

  • 目的だけプログレスアニメーションを表示したい場合https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html

    1. ドキュメントは、次の

      を言いますリフレッシュするには、ユーザーが特にデータをリフレッシュする必要があるということです。あなたがしようとしているのは、ある種の反パターンです。しかし理想的な状況では、プルをリフレッシュするように実装すると、ユーザーがアクションを実行するまでリロードする必要はありません。このようにして、ユーザーはモバイルデータを更新することなく更新することができますが、Wi-Fiに接続するとすぐに最新の状態に更新できます。

    フラグメントonResumeが呼び出されたときにリフレッシュを実装するための追加として、フラグメントから拡張する新しいクラスを作成できます。

    public class AutoRefreshFragment extends Fragment { 
    ... 
        public void onResume() { 
          panelScrollView.setRefreshing(); 
        } 
    ... 
    } 
    

    との代わりに、定期的な断片は、作成したばかりのextends AutoRefreshFragmentあなたのスーパークラスを使用して拡張します。

  • +0

    あなたの返信ありがとう!上記の私のコメントをご覧ください。 – Senti

    +0

    更新していただきありがとうございますが、これが私の元のコードスニペットで行ったことです。それとも、私は行方不明に違いがありますか? – Senti

    +0

    実際には類似していますが、スーパークラスはありません。 – QVDev

    関連する問題