5
私はViewPager
です。特定のアクションが発生した場合は、最初にFragment
を置き換える必要があります。AndroidのViewPagerで現在のフラグメントを置き換えます。
public static class PagerAdapter extends FragmentStatePagerAdapter{
private TempChannel latestChannel;
private VideosFragment.SortType sortType;
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
if(latestChannel == null) {
return new LatestVideosFragment();
}else{
return VideosFragment.getVideosFragment(latestChannel, sortType);
}
case 1:
return new LiveVideosFragment();
case 2:
return new ConversationsFragment();
}
return null;
}
}
私はLatestVideosFragment
でチャンネルをクリックすると、基本的に、アダプタの最初の位置は、VideosFragment
クラスのインスタンスに変更する必要があります。
public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){
adapter.setLatestChannel(channel, sortType);
adapter.notifyDataSetChanged();
Log.d("x", "on channel started");
}
私は、アダプタにnotifyDataSetChanged()
を呼び出すと、フラグメントを更新すると仮定ですが、それはできません。また、ViewPager
のinvalidate(
に電話してみても問題ありません。 Fragment
は、3番目のタブに移動して最初のタブに戻る場合にのみ更新されます。
ありがとうございます!メソッドをオーバーライドするのは簡単すぎるとは想像できませんでした – kimv