1

在我的活动中,我使用 viewpager。我创建了两个片段并将其附加到视图寻呼机,并在我的活动中不时从这些片段调用一些方法.. 在应用程序在低内存上被杀死并且重新创建的片段存在但与 viewpager somehome 没有连接.. 我可以不调用 MyFragment.mymethod().. 它说 MyFragment 为空

 public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
            if(position==0){
                if(homeFragment==null){
                    homeFragment=new HomeFragment();
                }
                return homeFragment;
            }else{
                if(mapFragment==null){
                    mapFragment=new Map();
                }
                return mapFragment;
            }
        }

. . .

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id==R.id.action_search){
            return true;
        }else if(id==R.id.action_feedback){

        }else if(id==R.id.action_rate_me){

        }else if(id==R.id.action_show_favorites ){
            if(mViewPager.getCurrentItem()!=0){
                mViewPager.setCurrentItem(0);
            }
            homeFragment.populateListWithFavorites();
            return true;

        }else if(id==R.id.action_history){
            if(mViewPager.getCurrentItem()!=0){
                mViewPager.setCurrentItem(0);
            }
            homeFragment.populateListWithHistory();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
4

2 回答 2

2

我找到了解决方案....

真的就像说我在主要活动中的片段变量已被清除,所以我不再与片段有任何联系。我所做的是在 onAttach() 内部我再次将我的片段链接到 mainActivity 变量

@Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = activity;
        ((RestaurantActivityViewPager)mActivity).menuFragment=this;
    }
    public static MenuFragment newInstance(int sectionNumber) {
        MenuFragment fragment = new MenuFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }
于 2014-02-22T16:15:25.307 回答
1

如果您通过此代码获得 tabFragment

Fragment fragment = mPagerAdapter.getItem(position);

当内存不足时,它会导致该错误。试试这个

fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.rewards_viewpager + ":"+position);
于 2016-10-01T06:35:27.373 回答