我有四个班级:
在FragmentActivity中,我将TabPagerAdapter(FragmentPagerAdapter)设置为ViewPager。
viewPager = (ViewPager)findViewById(R.id.pager);
tabAdapter = new TabPagerAdapter(this, viewPager);
viewPager.setAdapter(tabAbAdapter);
在TabPagerAdapter中,我从switch语句返回getItem()中的两个片段
return new fragmentA();
return new fragmentB();
Fragment A通过接口方法搜索并将变量传递给FragmentActivity。
public void onDataPass(String data) {
kks= data;
viewPager.setCurrentItem(1);
}
所有这一切都很好。我从FragmentA的列表中获取数据,然后将其传递回MainActivity。 setCurrentItem(1)显示片段B。
我坚持的部分是如何在onDataPass中的kks = data和viewPager.SetCurrentItem()之间运行FragmentB.upDateEquipment(kks)。
我可以从Fragment B获取kks的值,并通过从Fragment B中的按钮实现setOnClickItemListener来运行upDateEquipment,这样可行,但我不想为用户添加额外的点击。
答案 0 :(得分:0)
你可以试试这个:
Fragment fr = ((ActionBarActivity) activity)
.getSupportFragmentManager().findFragmentByTag(
"add_product");
if (fr instanceof Sellers_Add_Product_Fragment) {
((Sellers_Add_Product_Fragment) fr).yourMethod();
}
答案 1 :(得分:0)
我建议从寻呼机适配器获取片段。
class MyPagerAdapter extends FragmentPagerAdapter {
private FragmentA mFragmentA = new FragmentA();
private FragmentA mFragmentB = new FragmentB();
public Fragment getItem(int position) {
switch (position) {
case 0:
return mFragmentA;
case 1:
return mFragmentB;
}
}
public ReflashStatusFragment getFragmentA() {
return mFragmentA;
}
public RemoteFlashFragment getFragmentB() {
return mFragmentB;
}
然后使用类似mPagerAdapter.getFragmentB.updateEquipment(kks);
答案 2 :(得分:0)
早期的反应都可能有效。但我想从onDataPass方法添加更新FragmentB。我遇到的问题是获取FragmentB的实例以调用updateEquipment方法。我没有在findFragmentByTag调用中获得正确的id。这是我最终开始工作的方式。
onDataPass(String data) {
kks = data;
String name - tabAdapter.makeFragmentName(viewPager.getId(), 1);
FragmentB fragmentB = FragmentB)getSupportFragmentManager().findFragmentByTag(name);
fragmentB.updateEquipment(kks);
}