如何刷新需要从数据库加载的Android活动?

时间:2016-04-20 23:22:50

标签: java android android-intent

我有一个Android活动,可以从数据库加载信息并将信息传递给另一个活动。

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

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

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

2 个答案:

答案 0 :(得分:1)

每当我需要做这种事情时,我都会使用Loader。装载程序是为活动设置数据的极好方法,但它们并没有得到很好的理解。

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

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

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

此外,您应该查看Activity方法startActivityForResult()setResult()onActivityResult(),而不是重新启动主要活动。然后你的TransActivity可以"返回"到你的MainActivity。这是一个更好的流程。

一旦你有Loader,你的MainActivity就会调用LoaderManager.createLoader()来启动加载程序。

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

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

这会调用onActivityResult()中的MainActivity覆盖,您可以在其中调用LoaderManager.restartLoader()来加载新数据。

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

答案 1 :(得分:1)

以这种方式开始您的活动

Intent i = new Intent (AcitivtyOne.this,Activitytwo.class);
startActivityForResult(i,REQUEST_CODE);

在Activity中更新信息会将结果传递回ActivityOne

Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();

以任何方式将数据放入结果意图中,并在ActivityOne中的onActivityResult中接收数据并完成剩下的工作..

对于参考,请使用此链接Getting a Result from an Activity