我有一个选项卡布局,其中有通过适配器在我的主要 Activity 中添加的选项卡。我需要通过 addFrag 传递一个变量(因为每个 frag 都是根据 json 条目创建的)。见下文;
主要 Activity - FragmentPagerAdapter
static class Adapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public Adapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
主要 Activity - 选项卡生成器
Adapter adapter = new Adapter(getSupportFragmentManager());
adapter.addFragment(new DashboardTabs(), "Home");
adapter.addFragment(new TeamsNewTabs(), "Teams" + _teamCount + "");
adapter.addFragment(new FixturesNewTabs(), "Fixtures" + _fixturesCount + "");
adapter.addFragment(new ResultsNewTabs(), "Results"+ _resultsCount + "");
//send var through to the fragment like so ...
//not sure how to get the "var" to even pass through ...
String var = "my Tab Name";
adapter.addFragment(new MyFragment(var), var);
viewPager.setAdapter(adapter);
MyFragment - 访问时获取 var。
public class MyFragment extends Fragment {
//not sure how to get the var or if it even passes through ...
private getVar = var;
}
在这种情况下有办法做到这一点吗?或者我的想法是错误的。
最佳答案
像这样:在提交 fragment 之前:
Bundle b=new Bundle();
b.putInt("cid",44);
b.putString("title","name");
fragment.setArguments(b);
在 fragment 中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle pb=getArguments();
int =pb.getInt("cid");
String title=pb.getString("title");
}
关于java - 通过 addFragment() 传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42665016/