java - 通过 addFragment() 传递变量

标签 java android fragment

我有一个选项卡布局,其中有通过适配器在我的主要 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/

相关文章:

java - Sonar 问题 - 数组直接存储

java - 如何在web.xml中映射jsp类?

java - 更改 WebView JavaFX 的背景颜色

java - 亚行——它是如何运作的?

android - 仅单击一个时,RecyclerView 第一个和最后一个项目已更改

android - 如何从 fragment 中获取 getSupportFragmentManager()

java - 比较 Java 中的 float 和 double 原语

android - Flutter 图像选择器明确请求许可

android - 在 fragment 中首次请求位置许可后,应用程序立即崩溃

android - 运行时权限异常