我的工作流程如下图所示。

android - 获取新保存的数据的数据库ID并将其传递到上一个 Activity-LMLPHP


单击Home活动中的“新建”输入按钮
NewEntry活动中输入条目详细信息
NewEntry活动中单击“保存”
导航回Home活动


在导航回Home活动时,我使用NewEntry函数将新条目详细信息从Home活动传递到setResult(RESULT_OK, intent);活动。

除了新保存的数据的数据库ID外,我也可以接收数据。我在另一个线程中使用AsyncTask.execute()将新条目数据保存到数据库中。只有将条目保存在数据库中之后,我才会在回调函数中获得条目的ID

但是,一旦按下返回按钮并保存条目AsyncTask,就会调用它,并导航回Home活动。由于在ID执行完成之前未为新条目设置AsyncTask,因此在收到的意图中,我的ID活动中没有Home的值。

我想获取数据库值ID并将其传递给Home活动以用于其他目的。这样,我不必刷新Home活动中的整个列表即可显示新条目。

有什么办法可以做到这一点?

最佳答案

您可以从AsyncTask发送广播,也可以使用事件总线,例如GreenRobot或Otto。

但是更好的解决方案是在您的主要活动中添加一个加载器,因此,只要数据库中发生任何更改,它都将重新加载数据,因此您无需将数据传递回onResult并在以后传递ID。使用加载程序和内容提供程序(假设您正在使用SQLite数据库)将免费为您完成所有操作。

07-25 21:31
查看更多