Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:尝试添加到对象列表并获取nullPointerException_Java_Android_List_Arraylist_Nullpointerexception - Fatal编程技术网

java:尝试添加到对象列表并获取nullPointerException

java:尝试添加到对象列表并获取nullPointerException,java,android,list,arraylist,nullpointerexception,Java,Android,List,Arraylist,Nullpointerexception,如果这似乎是一个微不足道的问题,我真的很抱歉,但我没有任何运气 我创建了一个自定义对象,类似于 public class Foo { long id = 0; int counter = 0; String label = null; public void setId(long in){ this.id = in; } public void setCounter(int

如果这似乎是一个微不足道的问题,我真的很抱歉,但我没有任何运气

我创建了一个自定义对象,类似于

    public class Foo {
        long id = 0;
        int counter = 0;
        String label = null;

        public void setId(long in){
        this.id = in;
        }

        public void setCounter(int in){
        this.counter = in;
        }

        public void setLabel(String in){
        this.label = in;
        }
}
然后我在另一个类中创建一个列表

    public class ActivityThingy extends MainActivity {
        List<Foo> bar = new ArrayList<Foo>();

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                function();
        }

        private void function(){
            Foo kit = new Foo();
            kit.setId(1);
            kit.setCounter(1);
            kit.setLabel("");
            bar.add(kit);
        }

    }
公共类活动thingy扩展了main活动{
列表栏=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
函数();
}
私有空函数(){
Foo kit=新的Foo();
套件.setId(1);
设置计数器(1);
套件。设置标签(“”);
添加(套件);
}
}
然后我尝试在创建列表的同一类的另一个方法中向它添加一个对象

正在将对象列表项添加到初始化列表的类中的方法中。该列表是类的全局列表,因此可以重复调用该方法,根据用户输入向列表中添加多个项

但每次我都会得到一个空指针异常。显然,我希望它将该项添加到列表中,而不是抛出该异常

我还能忽略什么呢


顺便说一句,我正在使用Android Studio。

以下是为子孙后代所发生的事情

我得到了如上所述的对象,并设置了如上所述的对象值。问题是,我还通过intent extras为该对象传递了一个值

这就是上面的代码在我身上爆炸的地方

当我从另一个活动传递该对象时;它将新对象中声明的“label”值重置为null。对象中默认值为null的字符串是我的问题

我的解决办法是改变

String label = null;

我不再得到空指针异常


如果有人还有任何问题,我会更详细地编辑这个答案。如果需要更多详细信息,请发表意见。

根据您在问题中提供的代码,您正在设置id中的
id、计数器和标签
当您调用
setCounter(int-in)
时,请查看您的代码,就像
this.id=in它应该是
this.counter=in

将您的
Foo
类替换为以下类:

public class Foo {
        long id = 0;
        int counter = 0;
        String label = null;

        public void setId(long in){
        this.id = in;
        }

        public void setCounter(int in){
        this.counter = in;
        }

        public void setLabel(String in){
        this.label = in;
        }
}

您可能有一个错误的创建顺序,即您试图在创建“bar”之前将“Foo”添加到“bar”。还有一个提示。如果你想得到帮助,那么最好发布更多的代码(最好是整个类),因为像你那样发布代码是模糊的,并且没有提供足够的信息说明问题可能发生的地方。所以我实际上在类构造函数中初始化列表,然后在该类中的方法中调用bar.add(kit)。为什么不起作用呢?必须实现describeContents和writeToParcel,这些都是Parcelable的方法。因为我运行相同的代码并且没有出错。@Chitrang,我实际上是全班的。为了简单起见,我刚刚抓住了课程的开头,重新命名了一些东西。如果我没有实现describeContents和writeToParcel,它根本不会运行。它一直运行,直到我将该项添加到列表中。谢谢你@Velogiraptor根据您的个人资料中没有编辑徽章这一事实判断,我假设您可能不知道如何编辑您的问题以提供更多内容。如果是这种情况,那么只需使用它下面的[]按钮。对不起,这只是示例代码中的复制粘贴错误。在真实的课堂上,这是正确的。我已经编辑了这个例子,谢谢你的关注!
public class Foo {
        long id = 0;
        int counter = 0;
        String label = null;

        public void setId(long in){
        this.id = in;
        }

        public void setCounter(int in){
        this.counter = in;
        }

        public void setLabel(String in){
        this.label = in;
        }
}