Я новичок в Android, и я запутался в получении значения после вставки некоторых данных в sqlite, изучая этого урока , есть какой-то способ получить строку по id,
после следования коду, я не могу записать эти значения, чтобы передать в реагировать родной,
вот код, который я пробовал:
//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)
кто-нибудь может помочь мне решить проблему?
EDIT:
Ссылка: Что является причиной этой проблемы «Невозможно преобразовать аргумент класса класса org.json.JSONArray» в реагирующий нативный 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' }