首先我使用的是 FragmentPagerAdapter,我曾经使用它来获取当前的 viewpager,但是由于我有两个实现 viewpager 的片段,它与其他片段发生冲突,而不是我切换到 FragmentStatePagerAdapter 解决了冲突,但是当我尝试获取当前的 viewpager 它返回我 null
getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + viewPager.getCurrentItem())
SalesReport extends Fragment
final ViewPager viewPager = (ViewPager) viewGroup.findViewById(R.id.pager);
TabsPagerAdapter adapter = new TabsPagerAdapter(myContext.getSupportFragmentManager());
viewPager.setAdapter(adapter);
TabLayout tabLayout = (TabLayout) viewGroup.findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
TextView quantity = (TextView) viewGroup.findViewById(R.id.quantity);
quantity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
quantityBoolean = !quantityBoolean;
SalesReportList page = (SalesReportList) myContext.getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager + ":" + viewPager.getCurrentItem());
ListView listView = (ListView) page.getView().findViewById(R.id.saleslistview);
SalesReportItemAdapter adapter = (SalesReportItemAdapter) listView.getAdapter();
adapter.sortquantiy(quantityBoolean);
}
});
TabsPagerAdapter extends FragmentStatePagerAdapter{
@Override
public Fragment getItem(int position) {
return new SalesReportList().newInstance(position);
}
}
class SalesReportList extends Fragment
ViewGroup viewGroup = (ViewGroup) inflater.inflate(R.layout.fragment_sales_report_list, container, false);
ListView listView = (ListView) viewGroup.findViewById(R.id.saleslistview);
SalesReportItemAdapter listItemAdapter = new SalesReportItemAdapter(this, productType);
listView.setAdapter(listItemAdapter);
class SalesReportItemAdapter extends BaseAdapter
Fragment context;
ProductType productType;
List<Sales> salesList;
public SalesReportItemAdapter(Fragment salesReportList, ProductType productType) {
context = salesReportList;
this.productType = productType;
salesList = Myenum.INSTANCE.getSalesList(productType);
}
使用 FragmentStatePagerAdapter 返回 null