Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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/189.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_Realm - Fatal编程技术网

Java 使用领域时出现NullpointerException

Java 使用领域时出现NullpointerException,java,android,realm,Java,Android,Realm,我正在使用领域库在数据库中存储我的值。 问题是,由于RealM不支持自动增量,我正试图自己实现它 这是我的模态类: public class User extends RealmObject{ @PrimaryKey private int id; private String name; private int rollno; public String getName() { return name; } pub

我正在使用领域库在数据库中存储我的值。 问题是,由于RealM不支持自动增量,我正试图自己实现它

这是我的模态类:

public class User extends RealmObject{

    @PrimaryKey
    private int id;
    private String name;
    private  int rollno;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getRollno() {
        return rollno;
    }

    public void setRollno(int rollno) {
        this.rollno = rollno;
    }


    public int getid() {
        return id;
    }

    public void setid(int id) {
        this.id = id;
    }

}
我在我的主类中有一个名为insertValues的函数,在该函数中我将数据插入数据库

 public void insertValues(Realm realm,String name,int rollNo)
    {

        realm.beginTransaction();

        int nextId = (int)(realm.where(User.class).maximumInt("id") + 1); // this line gives me nullpointer error. Please help

        User user = realm.createObject(User.class);
        user.setName(name);
        user.setRollno(rollNo);
        realm.commitTransaction();
    }
我的日志:

E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at io.realm.RealmQuery.maximumInt(RealmQuery.java:1421)
at realmsample.bd.com.realmsample.MainActivity.insertValues(MainActivity.java:105)
at realmsample.bd.com.realmsample.MainActivity$1.onClick(MainActivity.java:53)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
看,, 这和你的问题很相似, 因此,正如建议的那样

如果对空结果查询调用了与max相关的函数,或者查询的结果都是空值,则maximumInt将引发异常

因此,请改用。

请参阅, 这和你的问题很相似, 因此,正如建议的那样

如果对空结果查询调用了与max相关的函数,或者查询的结果都是空值,则maximumInt将引发异常


因此,请改用。

问题在于获取id字段的最大值时的代码。在数据库中添加第一个对象时,maximumIntid将为NULL

所以你需要保持一个if条件来防止NPE

int nextId = 1;
if (realm.where(User.class).findAll().size() > 0) {
    nextId  = (int)(realm.where(User.class).maximumInt("id") + 1)
}

问题在于获取id字段的最大值时的代码。在数据库中添加第一个对象时,maximumIntid将为NULL

所以你需要保持一个if条件来防止NPE

int nextId = 1;
if (realm.where(User.class).findAll().size() > 0) {
    nextId  = (int)(realm.where(User.class).maximumInt("id") + 1)
}

你能给我举个例子吗。。我没有找到任何这样做的例子。你没有尝试将maxid作为上面的链接文档。你能告诉我一个这样做的例子吗。。我没有找到任何这样做的示例。您没有尝试将maxid作为上面的链接文档。当您第一次在领域数据库中添加对象时,您的行RealM.whereUser.class.maximunitid将为您提供空值,因为数据库中没有添加任何数据。在从数据库获取最大值之前,只需保留if条件。当您第一次在领域数据库中添加对象时,您的行RealM.whereUser.class.maximunitid将为您提供空值,因为数据库中没有添加任何数据。在从数据库获取最大值之前,只需保持if条件。