getSupportFragmentManager().findFragmentByTag
getSupportFragmentManager().findFragmentByTag
首先,我使用的是 FragmentPagerAdapter,我曾经为此获取当前的 viewpager,但由于我有两个实现 viewpager 的片段,它与其他片段发生冲突,然后我切换到 FragmentStatePagerAdapter,它解决了冲突,但是当我尝试获取当前的viewpager 它 returns 我 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);
}
returns 空与 FragmentStatePagerAdapter
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
private final SparseArray<SalesReportList> mPageReferences = new SparseArray<SalesReportList>();
@Override
public CharSequence getPageTitle(int position) {
String title = null;
switch (position) {
case 0:
title = "Mobile";
break;
case 1:
title = "Accessory";
break;
}
return title;
}
@Override
public Fragment getItem(int position) {
SalesReportList myFragment = SalesReportList.newInstance(position);
mPageReferences.put(position, myFragment);
// return new SalesReportList().newInstance(position);
return myFragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
mPageReferences.remove(position);
}
public SalesReportList getFragment(int key) {
return mPageReferences.get(key);
}
@Override
public int getCount() {
return 2;
}
}
首先,我使用的是 FragmentPagerAdapter,我曾经为此获取当前的 viewpager,但由于我有两个实现 viewpager 的片段,它与其他片段发生冲突,然后我切换到 FragmentStatePagerAdapter,它解决了冲突,但是当我尝试获取当前的viewpager 它 returns 我 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);
}
returns 空与 FragmentStatePagerAdapter
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
private final SparseArray<SalesReportList> mPageReferences = new SparseArray<SalesReportList>();
@Override
public CharSequence getPageTitle(int position) {
String title = null;
switch (position) {
case 0:
title = "Mobile";
break;
case 1:
title = "Accessory";
break;
}
return title;
}
@Override
public Fragment getItem(int position) {
SalesReportList myFragment = SalesReportList.newInstance(position);
mPageReferences.put(position, myFragment);
// return new SalesReportList().newInstance(position);
return myFragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
mPageReferences.remove(position);
}
public SalesReportList getFragment(int key) {
return mPageReferences.get(key);
}
@Override
public int getCount() {
return 2;
}
}