0

我在我的活动中使用了片段“swiper”。我创建了一个FragmentStatePagerAdapter,我试图从这个片段调用,由于某种原因,我的getItem()方法永远不会被调用。FragmentStatePagerAdapter中的getItem在从片段实例化时从未调用过

我已经搜索,发现我需要使用getChildFragmentManager()实例化我的FragmentStatePagerAdapter,因为我从片段调用它。我试过这个以及getSupportFragmentManager(),但都没有运气。

任何想法?

这里是我的片段,我使用我的MainActivity与方法shoudl设置的FragmentStatePagerAdapter:

public class PhotoFlipper extends Fragment { 
// properties and fields 
// primitive types 
String currentImage; 
int friendShareType = 0; 
ImageView share; 
ViewPager pager; 
PhotoFlipperItemAdapter pagerAdapter; 
LatLng itemPosition; 
Activity activity; 
FragmentActivity fragActivity; 
public ArrayList<MarkerModel> picsAndVids; 

// end properties and fields 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View photoFlipperFragmentView = inflater.inflate(R.layout.photo_flipper_layout, container, false); 
    InitializeFragment(photoFlipperFragmentView); 
    return photoFlipperFragmentView; 
} 


private void InitializeFragment(View photoFlipperFragmentView) { 
    activity = getActivity(); 
    fragActivity = (FragmentActivity)activity; 
    pager = (ViewPager)photoFlipperFragmentView.findViewById(R.id.photoflipper_pager); 

    share = (ImageView)photoFlipperFragmentView.findViewById(R.id.photoflipper_share); 
    share.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      IPictureFlipper iPictureFlipper = (IPictureFlipper)activity; 
      iPictureFlipper.ShareVideoOrImage(friendShareType, itemPosition, currentImage); 
     } 
    }); 
} 
@Override 
public void onHiddenChanged(boolean hidden) { 
    super.onHiddenChanged(hidden); 
    if (hidden) { 
     pager.setVisibility(View.GONE); 
    } 
} 

public void SetTappedPicture(int index) { 
    pagerAdapter = new PhotoFlipperItemAdapter(getChildFragmentManager(), picsAndVids, picsAndVids.size()); 
    pager.setAdapter(pagerAdapter); 
    pager.setCurrentItem(index); 
    pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 

     } 
    }); 
} 

}

这是我的FragmentStatePagerAdapter:

public class PhotoFlipperItemAdapter extends FragmentStatePagerAdapter { 
ArrayList<MarkerModel> _markers; 
int NUM_PAGES; 
String TAG = "home"; 

public PhotoFlipperItemAdapter(FragmentManager fm, ArrayList<MarkerModel> markers, int numpages){ 
    super(fm); 
    Log.d(TAG,"in adapter in constructor"); 
    _markers = markers; 
    NUM_PAGES = numpages; 

} 

@Override 
public Fragment getItem(int position) { 
    Log.d(TAG,"in adapter in get item"); 
    Fragment fragment = PhotoFlipperItemFragment.create(position, _markers); 
    return fragment; 
} 

@Override 
public int getCount() { 
    Log.d(TAG,"in adapter in get count: "+NUM_PAGES); 
    return NUM_PAGES; 
} 

}

logcat告诉我,NUM_PAGES> 0所以这不是我的问题。我在构造函数和getCount()中看到我的日志,但在getItem()中没有任何记录。

TIA

回答

0

我把这个整理出来了。我在我的InitializeActivity()中将片段隐藏后立即将其添加到我的FragmentManager中,因此它从未完全用ViewPager构建片段。

我将不得不想出一个不同的隐藏解决方案/显示片段,但这是我的问题。

相关问题