在我的MainActivity中,我有Transaction my MainFragment。
MainFragment mainFragment = new MainFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_holder, mainFragment)
.addToBackStack(mainFragment.getClass().getName())
.commit();
在我的MainFragment中,我正在使用ViewPager和FragmentStatePagerAdapter来托管My片段。
public class TaskPagerAdapter extends FragmentStatePagerAdapter {
private String cookieString = null;
private String userString = null;
public TaskPagerAdapter(FragmentManager fm, Cookie cookie) {
super(fm);
this.cookieString = HttpUtil.serializeCookie(cookie);
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new NotificationFragment();
break;
// case 1:
// break;
// case 2:
// break;
// case 3:
// break;
// case 4:
// break;
}
return fragment;
}
@Override
public int getCount() {
return 1;
}
@Override
public CharSequence getPageTitle(int position) {
return new String[]{"رویدادها", "توضیحات", "فرم ها"}[position];
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
并在我的MainFragment中:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ButterKnife.bind(this, rootView);
mPagerAdapter = new TaskPagerAdapter(getFragmentManager(),cookie);
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setCurrentItem(0);
return rootView;
根据这个link我把这个推荐写入主要片段:
mViewPager.setCurrentItem(0);
Fragment page = getActivity().getSupportFragmentManager().findFragmentByTag("android:switcher:" +
R.id.pager + ":" + mViewPager.getCurrentItem());
NotificationFragment fragment = (NotificationFragment) page;
fragment.setNotificationCallBack(this);
mCountNotifyTask.getCountNotifyTask();
return rootView;
但页面检索为空 !!你有什么建议吗? 我正在使用this tutorial
我仍然无效。
NotificationFragment fragment = (NotificationFragment) mPagerAdapter.getRegisteredFragment(0);
答案 0 :(得分:0)
不使用活动片段管理器,而是在MainFragment中使用ChildFragmentManager
x86
要获取片段,请使用子片段管理器
mPagerAdapter = new TaskPagerAdapter(getChildFragmentManager(),cookie);
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setCurrentItem(0);
请记住: ViewPager根据当前位置添加和删除片段 我建议将适配器中的所有片段实例保存为ArrayList,并在需要时根据位置索引检索它们