Android 正在将捆绑包从主活动发送到片段
我遵循了谷歌教程,代码中没有任何错误,但由于某种原因,我的包中的数据似乎没有从我的主要活动发送到我的片段(我的应用程序只是不断返回“0.00”)。请帮忙 主要活动: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
@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);