我在这里读了很多问题,但我现在仍然找不到任何正确的答案
所以我有这样的代码
VisitReport.java
public class VisitReport{
public static final String TABLE_NAME = "VisitReport";
public static final String COLUMN_ID = "ID";
public static final String COLUMN_VisitPurpose = "VisitPurpose";
public static final String COLUMN_VisitResult = "VIsitResult";
private int id;
private String VisitPurpose;
private String VisitResult;
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_VisitPurpose + " TEXT,"
+ COLUMN_VisitResult + " TEXT,"
+ ")";
public VisitReport() {
}
public VisitReport(
int id,
String VisitPurpose,
String VisitResult
){
this.id = id;
this.VisitPurpose = VisitPurpose;
this.VisitResult = VisitResult;
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getVisitPurpose() { return VisitPurpose; }
public void setVisitPurpose(String VisitPurpose) { this.VisitPurpose = VisitPurpose;}
public String getVisitResult() { return VisitResult; }
public void setVisitResult(String VisitResult) { this.VisitResult = VisitResult;}
}
DatabaseHelper.java
(我使用的代码段)
public VisitReport getVisitReport(long id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(VisitReport.TABLE_NAME,
new String[]{
VisitReport.COLUMN_ID,
VisitReport.COLUMN_VisitPurpose,
VisitReport.COLUMN_VisitResult,
},
VisitReport.COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null){
cursor.moveToFirst();
}
VisitReport vr = new VisitReport(
cursor.getInt(cursor.getColumnIndex(VisitReport.COLUMN_ID)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitPurpose)),
cursor.getString(cursor.getColumnIndex(VisitReport.COLUMN_VisitResult))
cursor.close();
return vr;
}
我想使用 bridge module
将值传递给react native
,但出现错误
Cannot convert argument of type class mypackage.VisitReport
这是我尝试过的代码:
@ReactMethod
public void getVisitReport(int id, Callback cb) {
DatabaseHelper db = new DatabaseHelper(reactContext);
cb.invoke(db.getVisitReport(id));
}
找到这个问题作为我的参考,我仍然不明白这些是什么意思,因为当我记录getVisitReport()
的值时,我得到了mypackage.VisitReport@12d960c9
,我不知道这个的含义
做错了什么吗?任何人都可以帮助我如何使其工作?
您可以通过执行以下操作单独访问每个值
db.getVisitReport(id).getVisitPurpose
或
VisitReport vr = db.getVisitReport(id); vr.getVisitPurpose
这是因为getVisitReport()
返回一个对象。对象是包含一组变量的类的实例。
当你这样做getVisitReport(id).toString()
你正在返回对象本身的字符串表示形式,而不是它的值。
如果要同时获取对象的所有属性,则需要在VisitReport
中创建一个新方法,该方法返回对象数组中的所有属性(因为 Java 中的所有对象都扩展了 Object,请参阅如何声明不同数据类型的数组)。
请确保您阅读了有关 java 和对象的更多信息。这是一个很好的链接:https://www.tutorialspoint.com/java/java_object_classes.htm
内容可能会起作用:-
VisitReport vr = db.getVisitorReport(id);
cb.invoke("ID=" +String.valueOfvr.getid()) + ", Purporse=" + vr.getVisitPurpose"); // etc
- 这假定调用可以接受字符串。