重新创建ViewPager中的所有页面,包括下一页和上一页

时间:2014-09-06 07:36:47

标签: android android-fragments android-viewpager android-adapter android-menu

我已阅读https://stackoverflow.com/a/16793871/2442638并将建议实施到我的代码中,但它只会重新创建当前片段,而不是所有片段。

这是我的寻呼机适配器。

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }


        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }

        @Override
        public Fragment getItem(int position) {

            Fragment frag = new ScreenSlidePagerFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_PAGE_POSITION, position);
            args.putInt(ARG_WEEK_NUMBER, mWeekNum);
            frag.setArguments(args);

            return frag;
        }

        @Override
        public int getCount() {
            return NUM_PAGES;
        }


        public CharSequence getPageTitle(int position) {

            return null;
        }

    }

我想从菜单中重新创建片段。

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

        super.onCreateOptionsMenu(menu, inflater);
      // The menu is being inflated elsewhere
    }

    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

// This is where I want to recreate all the fragments in the ViewPager.  It definitely runs as I have logged it happening.

        switch (id) {

            case R.id.action_switch_to_weekA:

                mPagerAdapter.notifyDataSetChanged();
                break;

            case R.id.action_switch_to_weekB:

                mPagerAdapter.notifyDataSetChanged();
                break;
        }

        return super.onOptionsItemSelected(item);
    }

我解决这个问题的唯一方法就是在页面更改侦听器中调用mPagerAdapter.notifyDataSetChanged,但这显然是一个坏主意,因为我只想在按下菜单按钮时重新创建它们,并且它可以实现非常糟糕的经历。

编辑:实际发生的是因为当加载当前页面时加载了下一页/前一页,这些页面不会刷新,而是其他页面。那么如何重新创建以前加载的片段?

0 个答案:

没有答案