2016-04-20 26 views
0

こんにちは誰も私は読書のアプリケーションに取り組んでいると私はビューのページャを構築している3つのフラグメントを含んで、bookFragmentchapterFragmentverseFragmentViewPagerのフラグメントデータを更新するにはどうすればよいですか?

私はchapterFragmentverseFragmentを更新したいですユーザーがブックアイテムを1つ選択したが、フラグメントUIがまだ終了していないため、OnPagerSelectedでrefreshUIを実行できません。

これはどのような方法ですか?

フォローは私のアダプタです:私はこれを行うとき

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    private int[] title = {R.string.label_book, R.string.label_chapter, R.string.label_verse}; 

    public ScreenSlidePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return bookFragment = new SelectionBookFragment(); 

      case 1: 
       return chapterFragment = new SelectionChapterFragment(); 

      case 2: 
       return verseFragment = new SelectionVerseFragment(); 
     } 
     return new Fragment(); 
    } 

    @Override 
    public int getCount() { 
     return NUM_PAGES; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return getResources().getString(title[position]); 
    } 
} 

とフラグメントUIがnullです:

Fragment fragment = screenSlidePagerAdapter.getItem(CHOOSER_CHAPTER); 
fragment.refreshUI() <-- null 

ビッグありがとう!

答えて

1

フラグメントが存在しない場合は、表示時にonCreateView()というメソッドが呼び出されます。ここで書籍のデータを設定することができます。
フラグメントが存在する場合は、refreshUI()を呼び出すことができます。
refreshUI()に電話するときは、fragment != nullを確認する必要があると思います。

+0

ヌルチェックが追加され、getItemが** bookFragment == nullを返すように変更されましたか? bookFragment = new SelectionBookFragment():bookFragment; **今は仕事です、ありがとう〜 –

0

シンプルかつ汚い方法は、別の方法

viewPager.setOffscreenPageLimit(2); 

を呼び出すことにより、すべてのフラグメント・インスタンスを作成し、それらを保つためにViewPagerを強制するだろうSharedPreferencesで選択した値を保存したときに値を取得することですページが表示されます。

SharedPreferences settings = getSharedPreferences(SELECTED_BOOK, 0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("selectedBook", 3); 
関連する問題