元々、MainActivity
クラスに1つのフラグメントがロードされていました。私はのonCreateFragmentPagerAdapterを使用してアクティビティからフラグメントメソッドを呼び出す
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(new TimeTableFragment(), TIMETABLEFRAGMENT_TAG)
.commit();
}
に以下と
onResume
if(*setting has changed*){ TimeTableFragment tf = (TimeTableFragment) getSupportFragmentManager() .findFragmentByTag(TIMETABLEFRAGMENT_TAG); if (null != tf) { tf.onStudentIdChanged(); } }
onStudentIdChanged()
方法WOUに使用しましたldは、プリファレンス設定が変更されたときにフラグメントデータをリフレッシュします。このアクティビティでは
FragmentPagerAdapter
を使用し、2つの異なるフラグメントをタブに読み込むようにリファクタリングしました。どちらのフラグメントも同じTimetableFragment
クラスのインスタンスですが、作成時に異なるパラメータが渡されます。FragmentPagerAdapter方法
TimetableFragment方法
public static TimeTableFragment newInstance(int sectionNumber) { TimeTableFragment fragment = new TimeTableFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); fragment.setArguments(args); return fragment; }
さて、これは私の
MainActivity
のonResume
で、動作していることを私はもはやフラグメントにアクセスすることができていませんを使用してこれらは、onCreate
の間にこのように追加されておらず、私はもはやonStudentIdChanged
メソッドを呼び出すことができないので、タイムテーブルフラグメントのすべての作成インスタンスに対して、このメソッドを呼び出してデータを更新/更新できますか?あなたの
FragmentPagerAdapter
imprementationで
フラグメントは、アクティビティからの更新のために明示的に「コールアウト」するのではなく、イベントに「購読する」ようにする必要があります。これはオブザーバパターンと呼ばれます。 –