我试图从另一个活动中获取字符串的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);
答案 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));
答案 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异常。< /强>