获取新保存数据的数据库ID并将其传递给上一个活动

时间:2016-03-10 18:04:33

标签: android listview android-activity android-asynctask android-sqlite

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

enter image description here

  1. 点击Home活动
  2. 中的“新建”条目按钮
  3. NewEntry活动
  4. 中输入条目详细信息
  5. 点击NewEntry活动
  6. 中的“保存”
  7. 导航回Home活动
  8. 在我导航回Home活动时,我使用NewEntry功能将新的参赛详情从Home活动传递到setResult(RESULT_OK, intent);个活动。

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

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

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

    有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

您可以从AsyncTask发送广播或使用GreenRobot或Otto等事件总线。

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