获取StringArrayListExtra并实例化它?

时间:2017-05-09 02:54:55

标签: java android

我试图从另一个活动中获取字符串的ArrayList,并打印出如下所示的元素:

if (resultCode == RESULT_OK) {              //this does get called
    Intent extras = this.getIntent();
    foo = extras.getStringArrayListExtra("foo");

    for (int i = 0; i < foo.size(); i++)    //error
        System.out.println(foo.get(i));
}

在getStringArrayListExtra之前实例化它并没有帮助解决错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference

我怎样才能获得ArrayList的大小?

修改

这就是我将它从一个活动传递到另一个活动的方式:

Intent intent = new Intent();
intent.putStringArrayListExtra("foo",foo);
setResult(RESULT_OK, intent);

7 个答案:

答案 0 :(得分:1)

您应该使用通过意图传递的相同关键字来获取值。

你应该使用“foo”关键字来获得arraylist。

if (resultCode == RESULT_OK) {              //this does get called
    Intent extras = this.getIntent();
    foo = extras.getStringArrayListExtra("foo");

    for (int i = 0; i < foo.size(); i++)    //error
        System.out.println(foo.get(i));
}

答案 1 :(得分:0)

您使用键 foo 将值放入Intent中,但使用条件获得相同的效果。因此它抛出空指针异常。

if (resultCode == RESULT_OK) {              //this does get called
    Intent extras = this.getIntent();
    foo = extras.getStringArrayListExtra("foo");
    for (int i = 0; i < foo.size(); i++)    //condition changed to foo
        System.out.println(foo.get(i));
}

答案 2 :(得分:0)

Intent intent = new Intent();
intent.putStringArrayListExtra("foo",foo);
setResult(RESULT_OK, intent);



if (resultCode == RESULT_OK) {              //this does get called
    Intent extras = this.getIntent();
    foo = extras.getStringArrayListExtra("foo");

    for (int i = 0; i < foo.size(); i++)    //error
        System.out.println(foo.get(i));
  • 将getStringArrayListExtara(&#34; condition&#34;)更改为(&#34; foo&#34;)

答案 3 :(得分:0)

活动会为&#34; foo&#34; 而不是&#34;条件&#34; 设置值。

Intent intent = new Intent();
intent.putStringArrayListExtra("foo",foo);
setResult(RESULT_OK, intent);

要检索相同的内容,您需要使用相同的变量 - &#34; foo&#34; 。另外/可选地,如果foo为null,你可以在foo arraylist上添加空检查并打印调试行。

if (resultCode == RESULT_OK) {              //this does get called
    Intent extras = this.getIntent();
    foo = extras.getStringArrayListExtra("foo");  //get foo contents
    if(foo != null){
      for (int i = 0; i < foo.size(); i++)    
        System.out.println(foo.get(i));
    } else {
        System.out.println("foo is null"); //for debugging
    }
}

答案 4 :(得分:0)

在将数据置于意图时将“foo”作为键,并在从意图中获取数据时将“条件”作为键

答案 5 :(得分:0)

请尝试下面的代码段。解决方案是添加类型转换以从展平对象获取ArrayList。

Intent intent = new Intent();
intent.putStringArrayListExtra("foo",foo);
setResult(RESULT_OK, intent);



if (resultCode == RESULT_OK) {              //this does get called
Intent extras = this.getIntent();
foo = (ArrayList<? extends Object>)extras.getStringArrayListExtra("foo");

for (int i = 0; i < foo.size(); i++)    //error
    System.out.println(foo.get(i));

答案 6 :(得分:0)

您是通过故意发送ArrayList中的数据对指数 “富”并得到对指数值 “条件”这就是为什么它给人的 NullPointerException异常。< /强>