Android:为什么Bundle putExtras不起作用?

时间:2014-06-19 16:19:14

标签: android android-fragments bundle

我知道这是一个愚蠢的问题,但问题是随机发生的,所以很烦人!那是我发现有时候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时,它会发生很多次,我只得到最后一个值。这是为什么?代码有什么错误吗?

2 个答案:

答案 0 :(得分:2)

问题是您已将所有密钥(LICENSE_1LICENSE_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";