1

4 つのフラグメントを持つ ViewPager があります。ユーザーが最初のフラグメントにデータを入力し、ボタンを押すと、データが sqlite に送られます。他の 3 つのフラグメントは、さまざまな方法で sqlite DB のデータを表示するために使用されます。最初のものは、それらをリストビューにリストするだけです。問題は、最後のフラグメント画面に戻ってスワップバックするまで、フラグメントでデータが更新されないことです。だから、私が設定した setOffscreenPageLimit と何か関係があるのではないかと考えていました

mypager.setOffscreenPageLimit(1);

私のViewPagerのonCreateでは、何の影響もないようです。次に、onPageSelected をオーバーライドし、そこに追加することを考えました

mypager.notifyDataSetChanged();

これは機能しますが、フラグメント間のスワイプは遅くなります。もう一度取り出してこれを最後のフラグメントにスワイプすると、フラグメントが更新されますが、非常に高速です。誰でもアイデアはありますか?

4

2 に答える 2

0

フラグメントをスムーズにスライドさせるには、実行に時間がかかるコードを onCreateView() で実行します。たとえば、150 ~ 250 ミリ秒の遅延があります。

トランジション アニメーションは UI スレッドで実行されるため、時間のかかる他の処理 (SQLite db アクセスなど) を同時に実行すると、トランジションのスムーズさが損なわれます。

YourFragments extends Fragment {

...
Handler mHanlder = new Handler();

  @Override
  public void onCreate(...){

  ...
  mHandler.postDelayed(someRunnable, 250);
  ...
  }

}
于 2013-06-03T10:59:29.657 に答える