我是android的新手,在sqlite中插入一些数据后,我对获取值感到困惑,从本教程中学习到,有一些方法可以逐行获取
在遵循代码之后,我无法将这些值记录到react native,中
这是我试过的代码:
//java bridge
@ReactMethod
public void insertNote(String Note, Callback successCb){
long id;
DatabaseHelper db = new DatabaseHelper(reactContext);
id = db.insertNote(Note);
Note note = db.getNote(id);
if(note !=null){
successCb.invoke(note);
} else {
//pass error callback
}
}
//Javascript code
MyModule.insertNote("Try Insert Note to sqlite", (success)=>{console.log(success)})
我想添加回调来显示已经插入的数据,但上面的代码显示错误
E/unknown:ReactNative: Exception in native call
java.lang.RuntimeException: Cannot convert argument of type class com.digifc.sqlite.Note
at com.facebook.react.bridge.Arguments.fromJavaArgs(Arguments.java:191)
at com.facebook.react.bridge.CallbackImpl.invoke(CallbackImpl.java:32)
at com.digifc.sqlite.RNDigiFcSqliteModule.insertNote(RNDigiFcSqliteModule.java:79)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:160)
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop(Looper.java:135)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
at java.lang.Thread.run(Thread.java:818)
有人能帮我解决这个问题吗?
编辑:参考文献:这个问题的原因是什么;无法转换org.json.JSONArray类型的参数";在react原生android中?
尝试这样修改java代码:
@ReactMethod
public void insertNote(String Note, Callback successCb){
long id;
DatabaseHelper db = new DatabaseHelper(reactContext);
id = db.insertNote(Note);
Note note = db.getNote(id);
WritableMap resultData = new WritableNativeMap();
if(note !=null){
resultData.putString("Value", String.valueOf(note));
successCb.invoke(resultData);
} else {
//pass error callback
}
}
我得到了结果I/ReactNativeJS: { Value: 'com.digifc.sqlite.Note@12d960c9' }
,但预期结果应该是I/ReactNativeJS: { Value: 'Try Insert Note to sqlite' }
而不是
resultData.putString("Value", String.valueOf(note));
使用
resultData.putString("Value", note.getNote());
这里note
指的是Note
类
该类有一个getNote
方法,该方法返回一个字符串,该字符串表示您要查找的文本。