无法使用Android中的Bundle </string>同时传递String和List <string>

时间:2013-10-22 06:37:16

标签: android android-intent

我想在第一个活动中使用以下代码将StringList<String>从一个活动发送到另一个活动:

Intent intent1=new Intent(Activity2);
Bundle b=new Bundle();
b.putStringArrayList("IDs", (ArrayList<String>) ids);
intent1.putExtra("message","IDs");
intent1.putExtras(b);

我正在第二项活动中访问此内容,如下所示:

 Bundle b= intent.getExtras();
 String str=b.getString("message");
 ArrayList<String> list=b.getStringArrayList("IDs");

问题是:即使str获得了正确的值,我的null仍为list。我在使用Bundle

时遗漏了什么

3 个答案:

答案 0 :(得分:2)

你需要做

Intent intent1=new Intent(Activity2);
Bundle b=new Bundle();
b.putStringArrayList("IDs", (ArrayList<String>) ids);
b.putExtra("message","IDs");
intent1.putExtras(b);

而不是使用

Intent intent1=new Intent(Activity2);
Bundle b=new Bundle();
b.putStringArrayList("IDs", (ArrayList<String>) ids);
intent1.putExtra("message","IDs");
intent1.putExtras(b);

原因是putExtras替换了设置为Intent的所有先前值。

答案 1 :(得分:1)

你做错了是,你正在传递'消息'作为意图并试图从捆绑

获取它
intent1.putExtra("message","IDs");

改为使用

b.putString("message","IDs");

答案 2 :(得分:0)

像这样发送extar参数

            Intent intent1 = new Intent(this, Activity2.class);

        searchUserIntent.putStringArrayListExtra("IDs", ids);

        startActivity(searchUserIntent);

并获取意图参数

            Intent intent2 = getIntent();
    ids2 = intent2.getStringArrayListExtra("IDs");