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

Java 如何刷新需要从数据库加载的Android活动?,java,android,android-intent,Java,Android,Android Intent,我有一个Android活动,它从数据库加载信息并将信息传递给另一个活动 活动2处理信息并更新数据库,然后通过以下方式重新启动活动1: Intent intent = new Intent(TransActivity.this, MainActivity.class); TransActivity.this.startActivity(intent); 这可以正常工作,但实际上不会加载数据库中更新的新信息。如何启动活动一(mainactivity)并让它加载由活动二(TransActivity)

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

活动2处理信息并更新数据库,然后通过以下方式重新启动活动1:

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

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

每当我需要执行此类操作时,我都会使用
加载程序。装入器是为活动设置数据的一种极好的方法,但它们并没有被很好地理解

您可以使用
游标加载程序
,但这需要
内容提供程序
,我打赌您不想编写其中一个

我将编写一个自定义的
AsyncTaskLoader
子类来查询数据库并返回一个
游标

看一看加载器的文档和示例应用程序,看看它会如何帮助您

另外,您可能不需要重新启动主活动,而应该查看
活动
方法
startActivityForResult()
setResult()
onActivityResult()
。然后您的
事务性
可以“返回”到您的
main活动
。这是一个更好的流程

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

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

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

这将调用
MainActivity
中的
onActivityResult()
覆盖,在这里调用
LoaderManager.restartLoader()
,以加载新数据


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

每当我需要做这类事情时,我都会使用
加载器。装入器是为活动设置数据的一种极好的方法,但它们并没有被很好地理解

您可以使用
游标加载程序
,但这需要
内容提供程序
,我打赌您不想编写其中一个

我将编写一个自定义的
AsyncTaskLoader
子类来查询数据库并返回一个
游标

看一看加载器的文档和示例应用程序,看看它会如何帮助您

另外,您可能不需要重新启动主活动,而应该查看
活动
方法
startActivityForResult()
setResult()
onActivityResult()
。然后您的
事务性
可以“返回”到您的
main活动
。这是一个更好的流程

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

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

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

这将调用
MainActivity
中的
onActivityResult()
覆盖,在这里调用
LoaderManager.restartLoader()
,以加载新数据


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

以两种方式启动您的活动

Intent i = new Intent (AcitivtyOne.this,Activitytwo.class);
startActivityForResult(i,REQUEST_CODE);
在Activity中更新信息并将结果传回ActivityOne

Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
以任何方式将数据放入结果意图中,并在onActivityResult中接收数据,然后在ActivityOne中执行其余操作


作为参考,请使用此链接

以两种方式开始您的活动

Intent i = new Intent (AcitivtyOne.this,Activitytwo.class);
startActivityForResult(i,REQUEST_CODE);
在Activity中更新信息并将结果传回ActivityOne

Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
以任何方式将数据放入结果意图中,并在onActivityResult中接收数据,然后在ActivityOne中执行其余操作

如需参考,请使用此链接