使用FragmentTabHost在片段之间发送数据

时间:2017-05-13 13:39:29

标签: android android-fragments send fragment-tab-host

我想在片段之间发送数据。 第一个片段(名称是FragmentTabs)包含两个标签(片段)FragTab1和FragTab2。

我想在FragmentTabs和FragTab1之间发送数据

这是我的代码:

FragmentTabs中的

    mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.contenttab);

    mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("tab 1"),
            fragment(id).getClass(), null);

函数片段:

private  Fragment fragment(String id){
    FragTab1 Ftab1 = new FragTab1();

    Bundle dataBndl = new Bundle();
    dataBndl.putString("id", id);

    Ftab1.setArguments(dataBndl);
    return  Ftab1 ;

}
FragTab1中的

Bundle bndl = getArguments();
getId = bndl.getString("id");

错误是在最后一条语句中引起的:getId = bndl.getString("id");

2 个答案:

答案 0 :(得分:0)

使用Bundle发送字符串:

    YourNewFragment fragment = new YourNewFragment ();
    Bundle args = new Bundle();
    args.putString("YourKey", "YourValue");
    fragment.setArguments(args);
  getFragmentManager().beginTransaction().add(R.id.container, fragment).commit();

在新片段的onCreateView中:

String value = getArguments().getString("YourKey");

答案 1 :(得分:0)

Navjot.jassal感谢您的帮助

解决了,我需要在mTabHost.addTab的参数中添加我的数据库:

mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.contenttab);

Bundle dataBndl = new Bundle();
dataBndl.putString("id", id);

mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator("tab 1"),
        FragTab1.class, bundle);

FragTab1类没有变化