- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个无法解决的大问题。我正在开发一个“提醒应用程序”,它允许您插入备忘录并在需要执行此操作时通知您。好吧,我在 Android 中使用 Room,当我插入新任务时,我想使用插入任务的 id 作为管理通知的 id。我有 TaskViewModel 和 TaskRepository。这是我写的代码:
在 DAO 中我有:
@Insert
long insert(Task task);
在主要 Activity 中我有:
Task task = new Task(title, data_calendario, time, priority, type, note, "pending");
taskViewModel.insert(task);
在 TaskViewModel 中我有:
public void insert(Task task){
repository.insert(task);
}
在 TaskRepository 中我有:
public void insert(Task task){
new InsertTaskAsyncTask(taskDao).execute(task);
}
private class InsertTaskAsyncTask extends AsyncTask<Task, Void, Long>{
private TaskDao taskDao;
private InsertTaskAsyncTask(TaskDao taskDao){
this.taskDao = taskDao;
}
@Override
protected Long doInBackground(Task... tasks) {
Long test = taskDao.insert(tasks[0]);
System.out.println("Stampa repository BUONO: "+test); //here I have the id that I need (I think..)
return test;
}
@Override
protected void onPostExecute(Long test) {
super.onPostExecute(test);
id = test;
}
}
我读到可以从 Insert 方法中检索插入行的 id(我的 task_table 上有一个自动生成的 int Id 作为主键),这应该是我所需要的。现在我的问题是,如何将插入任务的 id 从 TaskRepository 返回到我的 MainActivity 以创建通知?预先感谢您的帮助
一小步
在存储库中,我设置了一个private long id;
变量。
在 onPostExecute 内部,我设置了 id=test;
,如上面的代码所示,我创建了一个如下方法:
public long getId(){
return id;
}
它是在插入方法之后从 MainActivity 调用的。问题是,我第一次运行应用程序并创建任务时,此变量中的值始终为 0。我该如何解决这个问题?
最佳答案
这可能对你有帮助。
基于文档here (在代码 fragment 下方)
用@Insert
注释的方法注解可以返回:
long
对于单个插入操作long[]
或Long[]
或List<Long>
对于多个插入操作void
如果您不关心插入的 ID关于java - 如何将Repository自动生成的ID返回到MainActivity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59146861/
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!