我的工作流程如下图所示。
单击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数据库)将免费为您完成所有操作。