简体   繁体   English

隐藏带有片段的ViewPager

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM