java - RxJava插入并返回Id方法(房间)调试

标签 java android android-sqlite rx-java rx-java2

我试图从 Activity 中将一行插入 SQLITE 数据库,然后返回要存储在 Activity 中的变量中的 rowId。请参阅下面我使用的方法和逻辑。

  private void insert() {

    Log.d(TAG, "saveNote: called.");
    try {
       // String automaticThoughtString = automaticThoughtET.getText().toString().trim();
        Note note = new Note(userId, therapistId, "Test", 0, "", "", postedWorkout);
        noteDao.insert(note)
                .map(new Function<Long, Integer>() {
                    @Override
                    public Integer apply(Long aLong) throws Exception {
                        long l = aLong;
                        return (int) l;
                    }
                }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new SingleObserver<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onSuccess(Integer integer) {

                        sqCbtId = integer;
                    }

                    @Override
                    public void onError(Throwable e) {

                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }

android studio 中的调试显示:

  W/System.err: java.lang.NullPointerException: Attempt to  invoke interface method 'io.reactivex.Single  com.example.persistence.dao.NoteDao.insert(com.example.persistenc   e.entity.Note)' on a null object reference
  W/System.err:     at  com.example.ui.activities.NoteActivity.insert(NoteActivity.java:1 42)
    at  com.example.ui.activities.NoteActivity.access$000(NoteActivity.java:43)
    at com.example.ui.activities.NoteActivity$1.onClick(NoteActivity.java:129)
    at android.view.View.performClick(View.java:6897)
    at android.view.View$PerformClick.run(View.java:26104)
    at android.os.Handler.handleCallback(Handler.java:789)
    W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at  com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

最佳答案

您的 noteDao 为 null,您在使用它之前没有初始化它。

关于java - RxJava插入并返回Id方法(房间)调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57026076/

相关文章:

java - 无法在 Java 中从 Linux 计算机连接到 Oracle 数据库

java - 如何正确扩展这个抽象类?

java - ServerSocket.accept() 抛出 SocketTimeoutException 并显示 null 消息

android - 插入一个包含撇号的字符串(sqlite)

java - Android Studio登录系统数据库问题

android - 将 SQlite DB 复制到公共(public)目录(非 root 设备)

java - 如果没有 "if"大小写匹配,则在开头设置默认值或显式设置

java - viewpager2 降低水平滚动的灵敏度

java - Admob 原生快捷广告

java - 添加多个约束