【发布时间】:2020-09-08 06:19:45
【问题描述】:
我在理解为什么会出现空对象异常时遇到问题。
我对 DAO 的调用是在 onCreate 中:
AsyncTask.execute(new Runnable() {
@Override
public void run() {
WDatabase wdatabase = WDatabase.getInstance(MyApplication.getAppContext());
NDao nDao = wDatabase.nDao();
MNode mNode = new MNode();
mNode = nDao.getMNodeByID(516);
Log.d("NTest", "nData: "+mNode.getNID());
}
});
我的DAO中的方法是
//Get by id
@Query("SELECT * FROM MNode WHERE nodeID= :nodeID")
MNode getMNodeByID(int nodeID);
在我的模型中,变量是 int nodeID
返回空指针我做错了什么?数据库存在,节点是否存在于数据库中?但我仍然得到空对象?
【问题讨论】:
-
你能打印错误日志吗?检查“nDao”数据访问对象是否为空。检查您是否能够访问 asyncTask 中的 dao
-
不,我没有使用弹簧
-
nDao 打印,不为空
-
它现在正在工作,除了 Dao 返回一个 int 然后将其改回以再次返回我的 MNode 之外,我似乎没有更改任何其他内容?我将检查并查看发生了什么变化并发布答案。感谢您的所有帮助
-
发布您的堆栈跟踪
标签: java android android-room dao