我有一个 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/