Android 正在将捆绑包从主活动发送到片段

Android 正在将捆绑包从主活动发送到片段,android,android-fragments,android-studio,bundle,Android,Android Fragments,Android Studio,Bundle,我遵循了谷歌教程,代码中没有任何错误,但由于某种原因,我的包中的数据似乎没有从我的主要活动发送到我的片段(我的应用程序只是不断返回“0.00”)。请帮忙 主要活动: @Override public void assignButtonBWHW1Clicked(String assignButtonBWHWClicked) { if (assignButtonBWHWClicked.equals(assignButtonBWHWClicked)) { assignFra

我遵循了谷歌教程,代码中没有任何错误,但由于某种原因,我的包中的数据似乎没有从我的主要活动发送到我的片段(我的应用程序只是不断返回“0.00”)。请帮忙

主要活动:

@Override
public void assignButtonBWHW1Clicked(String assignButtonBWHWClicked) {

    if (assignButtonBWHWClicked.equals(assignButtonBWHWClicked)) {

        assignFragment1 = new assignFragment1();
        buttonsGeneric = new genericBackNextFragment();

        splitItFragmentManager3 = getFragmentManager();
        splitItFragmentTransaction3 = splitItFragmentManager3.beginTransaction();
        splitItFragmentTransaction3.replace(R.id.fragment_container, assignFragment1);

        splitItFragmentTransaction3.replace(R.id.fragment_container_2, buttonsGeneric);
        splitItFragmentTransaction3.addToBackStack(null);

        splitItFragmentTransaction3.commit();

        Bundle bundleAssign = new Bundle();
        bundleAssign.putDouble("price1", 22);
        assignFragment1.setArguments(bundleAssign);

    }
}
片段:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    assignFragment1View = inflater.inflate(R.layout.assign_fragment_1, container, false);

    item1 = (TextView) assignFragment1View.findViewById(R.id.assign1_food_item_1);
    item2 = (TextView) assignFragment1View.findViewById(R.id.assign1_food_item_2);
    priceItem1 = (TextView) assignFragment1View.findViewById(R.id.assign1_price_item_1);
    priceItem2 = (TextView) assignFragment1View.findViewById(R.id.assign1_price_item_2);

    Bundle bundleAssign = this.getArguments();
    Double price1Double = bundleAssign.getDouble("priceItem1", 0.00);
    priceItem1.setText(String.valueOf(price1Double));

    return assignFragment1View;
}
试一试

或者,
Bundle bundleASign=getActivity().getArguments()

而不是

Bundle bundleAssign = this.getArguments();
获得价值就像

double result = bundleAssign.getDouble("price1");

在获得fragment nmanager之前,请尝试将捆绑初始化放置到fragment

if (assignButtonBWHWClicked.equals(assignButtonBWHWClicked)) {

    assignFragment1 = new assignFragment1();
    buttonsGeneric = new genericBackNextFragment();

    Bundle bundleAssign = new Bundle();
    bundleAssign.putDouble("price1", 22);
    assignFragment1.setArguments(bundleAssign);

    splitItFragmentManager3 = getFragmentManager();
    splitItFragmentTransaction3 = splitItFragmentManager3.beginTransaction();
    splitItFragmentTransaction3.replace(R.id.fragment_container, assignFragment1);

    splitItFragmentTransaction3.replace(R.id.fragment_container_2, buttonsGeneric);
    splitItFragmentTransaction3.addToBackStack(null);

    splitItFragmentTransaction3.commit();

}

只需将
片段
侧的
priceItem1
更新为
price1

Double price1Double = bundleAssign.getDouble("priceItem1", 0.00);


这是因为在将数据添加到bundle和使用不同的键进行检索时,您使用的是单独的键。因此,它将返回
默认值
,即
0.00
,对于
priceItem1

,您必须在代码中进行两次更改。
第一次更改是在事务之前设置参数

if (assignButtonBWHWClicked.equals(assignButtonBWHWClicked)) {

        assignFragment1 = new assignFragment1();
        Bundle bundleAssign = new Bundle();
        bundleAssign.putDouble("price1", 22);
        assignFragment1.setArguments(bundleAssign);
        buttonsGeneric = new genericBackNextFragment();

        splitItFragmentManager3 = getFragmentManager();
        splitItFragmentTransaction3 = splitItFragmentManager3.beginTransaction();
        splitItFragmentTransaction3.replace(R.id.fragment_container, assignFragment1);

        splitItFragmentTransaction3.replace(R.id.fragment_container_2, buttonsGeneric);
        splitItFragmentTransaction3.addToBackStack(null);

        splitItFragmentTransaction3.commit();



    }
第二种方法总是使用相同的键来设置和检索包中的数据,以便在片段中进行更改

  Double price1Double = bundleAssign.getDouble("priceItem1", 0.00);


非常感谢!这就解决了问题。令人惊讶的是,你竟然能把自己的代码看一百遍,却没有发现这么明显的东西。很好,它修复了,如果有帮助的话就接受它:)这样它就可以从未回答的问题队列中清除:)非常感谢。在我的例子中,我没有调用
assignFragment1.setArguments(bundleAssign)(请注意:在你的答案中加粗,因为这是你的答案与网络上任何其他naswer的主要区别)。再次感谢
if (assignButtonBWHWClicked.equals(assignButtonBWHWClicked)) {

        assignFragment1 = new assignFragment1();
        Bundle bundleAssign = new Bundle();
        bundleAssign.putDouble("price1", 22);
        assignFragment1.setArguments(bundleAssign);
        buttonsGeneric = new genericBackNextFragment();

        splitItFragmentManager3 = getFragmentManager();
        splitItFragmentTransaction3 = splitItFragmentManager3.beginTransaction();
        splitItFragmentTransaction3.replace(R.id.fragment_container, assignFragment1);

        splitItFragmentTransaction3.replace(R.id.fragment_container_2, buttonsGeneric);
        splitItFragmentTransaction3.addToBackStack(null);

        splitItFragmentTransaction3.commit();



    }
  Double price1Double = bundleAssign.getDouble("priceItem1", 0.00);
  Double price1Double = bundleAssign.getDouble("price1", 0.00);