Java 如何刷新需要从数据库加载的Android活动?
我有一个Android活动,它从数据库加载信息并将信息传递给另一个活动 活动2处理信息并更新数据库,然后通过以下方式重新启动活动1: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)
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中执行其余操作
如需参考,请使用此链接