[英]ViewPager with Fragments are Hidden
i'm having a problem with ViewPager with Fragments. 我对带有片段的ViewPager有问题。 in my app i have one fragment that inside it their's a ViewPager that each Fragment inside it have a ListView.
在我的应用程序中,我有一个片段,里面有一个ViewPager,里面的每个片段都有一个ListView。 each item on the ListView open another fragment that display more details about that item.
ListView上的每个项目都打开另一个片段,该片段显示有关该项目的更多详细信息。 so far so good, but when i popBackStack the FragmentManager the current fragment in the ViewPager is not seen.
到目前为止,一切都很好,但是当我弹出BackBackStack的FragmentManager时,看不到ViewPager中的当前片段。
and if i try to slide between the page i can see the next page and then slide back and see again the hidden page. 如果我尝试在页面之间滑动,我可以看到下一页,然后向后滑动并再次看到隐藏的页面。
PageAdapter code: PageAdapter代码:
private class SchedulePageAdapter extends FragmentStatePagerAdapter{
JSONArray scheduleJsonArray;
public SchedulePageAdapter(FragmentManager fm,JSONArray scheduleJsonArray) {
super(fm);
this.scheduleJsonArray = scheduleJsonArray;
}
@Override
public ScheduleFragment getItem(int position) {
ScheduleFragment scheduleFragment = new ScheduleFragment();
Bundle bundle = new Bundle();
try {
bundle.putString("json",scheduleJsonArray.getJSONObject(position).getJSONArray("channel_schedule").toString());
bundle.putString("day",getArguments().getString("day"));
bundle.putString("channel",channelTextView.getText().toString());
} catch (JSONException e) {
e.printStackTrace();
}
scheduleFragment.setArguments(bundle);
return scheduleFragment;
}
public JSONArray getScheduleJsonArray() {
return scheduleJsonArray;
}
@Override
public int getCount() {
int count = scheduleJsonArray.length();
return count;
}
}
open item in listView: 在listView中打开项目:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction
.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left, R.anim.slide_in_right, R.anim.slide_out_right)
.replace(R.id.mainFrameLayout, fullScheduleFragment, FullScheduleFragment.class.getSimpleName())
.addToBackStack(PhoneMainActivity.MENU_STACK).commit();
try use getChildFragmentManager()
when you instanciate your SchedulePageAdapter 实例化SchedulePageAdapter时,请尝试使用
getChildFragmentManager()
PagerAdapter adapter = new SchedulePageAdapter (getChildFragmentManager(), scheduleJsonArray);
pagerData.setAdapter(adapter);
also use getSupportFragmentManager
unstead : 也可以使用
getSupportFragmentManager
代替:
FragmentManager fragmentManager = getSupportFragmentManager();
if still dosn't work please leave a comment 如果仍然无法正常工作,请发表评论
Good luck 祝好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.