java - 如何刷新需要从数据库加载的 Android Activity ?

标签 java android android-intent

我有一个 Android Activity ,它从数据库加载信息并将信息传递给另一个 Activity 。

Activity 二处理信息并更新数据库,然后以这种方式重新启动 Activity 一:

Intent intent = new Intent(TransActivity.this, MainActivity.class);
TransActivity.this.startActivity(intent);

这工作正常,但它实际上并没有加载数据库中更新的新信息。如何启动 Activity 一(mainactivity)并让它加载 Activity 二(TransActivity)更新的新信息?

最佳答案

每当我需要做此类事情时,我都会使用Loader。加载器是为 Activity 设置数据的绝佳方法,但人们对它们的理解还不是很好。

您可以使用 CursorLoader,但这需要 ContentProvider,而且我打赌您不想编写其中之一。

我会编写一个自定义 AsyncTaskLoader 子类来查询数据库并返回 Cursor

查看 Loaders 的文档和示例应用程序,了解它对您有何帮助。

此外,您可能应该查看 Activity 方法 startActivityForResult()setResult()onActivityResult()。然后您的 TransActivity 可以“返回”到您的 MainActivity。这是一个更好的流程。

因此,一旦您有了 Loader,您的 MainActivity 将调用 LoaderManager.createLoader() 来启动加载程序。

您可以使用 MainActivity.startActivityForResult() 调用 TransActivity

然后,一旦您的 TransActivity 更新了数据库,它就会调用 setResult()finish()

这将调用 MainActivity 中的 onActivityResult() 重写,您可以在其中调用 LoaderManager.restartLoader() 来加载新数据.

如果您不想使用加载器,您可以在 onActivityResult() 中重新查询数据库,因为您知道 TransActivity 已完成更新。

关于java - 如何刷新需要从数据库加载的 Android Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36756944/

相关文章:

java - 这个奇怪的图标在 Intellij 上意味着什么?

android - 让MediaPlayer在启动新的Intent时继续播放

android - 解码未知类型代码

android - 单击自定义 URI 时启动我的 Activity 的 Intent 过滤器

android - 如何使用 SherlockListFragment 启动有 Intent 的新 Activity ?

java - 配置文件不存在时的默认 Spring bean

java - 初始化程序对静态字段的非法引用

android - "onAdLeftApplicationDone"的事件?

android - ProgressDialog.dismiss() 在异步类 android 中不关闭

java - 如何在 JSF 中支持同一种语言的多个区域设置?