【问题标题】:ViewPager with Fragments are Hidden带有片段的 ViewPager 被隐藏
【发布时间】:2016-01-11 00:39:14
【问题描述】:

我在使用带有 Fragments 的 ViewPager 时遇到问题。 在我的应用程序中,我有一个片段,其中有一个 ViewPager,其中的每个片段都有一个 ListView。 ListView 上的每个项目都会打开另一个片段,显示有关该项目的更多详细信息。 到目前为止一切都很好,但是当我 popBackStack FragmentManager 时,ViewPager 中的当前片段不可见。

如果我尝试在页面之间滑动,我可以看到下一页,然后向后滑动并再次看到隐藏的页面。

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;
    }

}

在列表视图中打开项目:

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();

【问题讨论】:

    标签: java android android-fragments android-viewpager


    【解决方案1】:

    在实例化 SchedulePageAdapter 时尝试使用 getChildFragmentManager()

    PagerAdapter adapter = new SchedulePageAdapter (getChildFragmentManager(), scheduleJsonArray);
            pagerData.setAdapter(adapter);
    

    也可以使用getSupportFragmentManager unstead :

      FragmentManager fragmentManager = getSupportFragmentManager();
    

    如果还是不行请留言

    祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 2016-10-16
      • 1970-01-01
      相关资源
      最近更新 更多