与ViewPager一样,我有很多应用程序使用MainActivity。 当我在NavigationDrawer中选择选项时,我想在ViewPager中更改一个片段。所以为了实现这一点,我创造了这样的东西:
选项单击侦听器:
@Override
public void onItemClick(View view, int pos) {
mainActivity.changeFragment(pos);
}
MainActivity方法:
public void changeFragment(final int key) {
mDrawerLayout.closeDrawers();
new Handler(Looper.getMainLooper()).post(new Runnable(){
@Override
public void run() {
mainPagerAdapter.setKey(key);
}
});
}
和MainPagerAdapter:
public class MainPagerAdapter extends FragmentStatePagerAdapter {
public final static int NUM_OF_PAGES = 2;
private int mCurrentFragmentKey = 0;
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == HOME) {
if (mCurrentFragmentKey == 0)
return new Fragment1();
else
return new Fragment2();
} else
return new SecondViewPagerFragment();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
return NUM_OF_PAGES;
}
public void setKey(int key) {
mCurrentFragmentKey = key;
notifyDataSetChanged();
}
问题:
不幸的是,它无法正常工作,因为当我选择整个视图口吃表现不佳时。我该如何解决这个问题?
修改
我更改了通知寻呼机,数据集已更改为:
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
mainPagerAdapter.setKey(key);
}
}, 500);
现在一切正常,但我不确定这是最好的解决方案。有人可以帮我这个吗?
答案 0 :(得分:0)
如果你有各种扩展FragmentStatePagerAdapter的适配器,当你需要更改viewpager中的内容时,你可以简单地调用REGISTRATION_EMAIL_HTML = False
?
如果setAdapter提供要显示的视图,更改适配器可能会使viewpager的内容发生变化。