FragmentActivity に実装されている ViewPager を使用してユーザーがページを変更したときにフラグメント コンテンツを更新するための優れたソリューションを探しています。 FragmentActivity を次のように実装しました 。
List<Fragment> fragments = new Vector<Fragment>();
private void initialisePaging() {
for(int i=0;i<getCount;i++){
fragments.add(Fragment.instantiate(this, DetailInfoFragment.class.getName()));
}
this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) super.findViewById(R.id.viewPager);
pager.setAdapter(this.mPagerAdapter);
pager.setCurrentItem(itemNumber);
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
Log.v("onPageSelected", "arg0 "+arg0);
MyAdapter getVal = new MyAdapter(InformationActivity.this);
Log.v("InformationActivity ", "getTitle : == > "+getVal.titles[arg0]);
Log.v("InformationActivity ", "getSubTitle : == > "+getVal.subTitles[arg0]);
getSharedPreferences("Values", 0).edit().putString("Title", getVal.titles[arg0]).commit();
getSharedPreferences("Values", 0).edit().putString("SubTitle", getVal.subTitles[arg0]).commit();
getSharedPreferences("Values", 0).edit().putInt("Image", getVal.images[arg0]).commit();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
アクティビティとフラグメントの間でデータを共有するために共有設定を使用しました。
次のように、フラグメントを拡張する DetailInfoFragment を実装しました。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View f1Vew = inflater.inflate(R.layout.details, container, false);
imageIcon = ((ImageView)f1Vew.findViewById(R.id.imagLrg));
titleTxt = ((TextView)f1Vew.findViewById(R.id.titleText));
subTxt = ((TextView)f1Vew.findViewById(R.id.subTitleText));
String titleMain = getActivity().getSharedPreferences("Values", 0).getString("Title", "");
String subMain = getActivity().getSharedPreferences("Values", 0).getString("SubTitle", "");
Log.v("DetailInfoFragment : ", "tilte : "+titleMain);
Log.v("DetailInfoFragment : ", "subMain : "+subMain);
titleTxt.setText(""+titleMain);
subTxt.setText(""+subMain);
imageIcon.setImageResource(getActivity().getSharedPreferences("Values", 0).getInt("Image", 0));
return f1Vew;
}
上記の実装から、ユーザーがビューページャーの助けを借りてページをスワイプすると、InformationActivity から DetailsFragment に同じタイトルとサブタイトルを取得しています。タイトル、画像アイコン。私の場合、フラグメントコンテンツを更新するにはどうすればよいですか