我知道这是一个愚蠢的问题,但问题是随机发生的,所以很烦人!那是我发现有时候Bundle putExtras()并不能很好地工作(有时它有时会工作它没有)。我收到的捆绑包总是只得到一个值:
例如,这里我想将四个字符串值传递给一个片段,这里是代码:
Bundle license = new Bundle();
license.putString(LICENSE_1, license_1);
license.putString(LICENSE_2, license_2);
license.putString(LICENSE_3, license_3);
license.putString(LICENSE_ADD, license_add);
DialogFragment mFragment = new WatchOptionsDialog();
mFragment.setArguments(license);
mFragment.show(getActivity().getFragmentManager(),"tag");
在我定义的这个片段的顶部
public static final String LICENSE_1 = "";
public static final String LICENSE_2 = "";
public static final String LICENSE_3 = "";
public static final String LICENSE_ADD = "";
我希望传递的四个字符串的值是" 5"," 6"," 7"," 8"
在另一个片段中,我收到了这个
的包Bundle license = getArguments();
String license_1 = license.getString(FragmentMovieInfo.LICENSE_1);
String license_2 = license.getString(FragmentMovieInfo.LICENSE_2);
String license_3 = license.getString(FragmentMovieInfo.LICENSE_3);
String license_add = license.getString(FragmentMovieInfo.LICENSE_ADD);
Log.v("license_1", license_1);
Log.v("license_2", license_2);
Log.v("license_3", license_3);
Log.v("license_add", license_add);
问题是我得到的所有价值是4" 8"。如下:
license_1 8
license_2 8
license_3 8
license_add 8
当我使用bundle时,它会发生很多次,我只得到最后一个值。这是为什么?代码有什么错误吗?
答案 0 :(得分:2)
问题是您已将所有密钥(LICENSE_1
,LICENSE_2
等)定义为空字符串。因此,所有的密钥都完全相同。
putString()
之类的方法有两个参数 - 一个键和一个值。 Bundle实际上只是键值对的映射。如果所有键都相同,则它们都将映射到相同的值。
答案 1 :(得分:1)
使用时应使用其他值,例如:
public static final String LICENSE_1 = "LICENSE_1";
public static final String LICENSE_2 = "LICENSE_2";
public static final String LICENSE_3 = "LICENSE_3";
public static final String LICENSE_ADD = "LICENSE_ADD";