Android 使用onResume()刷新活动
我一辈子都不知道如何在按下后退按钮后刷新活动。我目前有一个活动A,它激发了转到B的意图,而在B幕上,如果你按下后退键,我想返回到A幕,但让它自己刷新。我可以使用此意图刷新当前的活动:Android 使用onResume()刷新活动,android,android-intent,lifecycle,back-button,onresume,Android,Android Intent,Lifecycle,Back Button,Onresume,我一辈子都不知道如何在按下后退按钮后刷新活动。我目前有一个活动A,它激发了转到B的意图,而在B幕上,如果你按下后退键,我想返回到A幕,但让它自己刷新。我可以使用此意图刷新当前的活动: Intent refresh = new Intent(this, Favorites.class); startActivity(refresh); this.finish(); 但是我不知道如何正确使用onResume()函数在返回后刷新我的act A。您需要将更新活动UI的代码放在onRes
Intent refresh = new Intent(this, Favorites.class);
startActivity(refresh);
this.finish();
但是我不知道如何正确使用onResume()函数在返回后刷新我的act A。您需要将更新活动UI的代码放在
onResume()方法中。也许你应该发布更多的代码或者解释你到底想更新什么。使用startActivityForResult(intent,requestCode)代码>
从活动A开始活动B
然后在活动A中
覆盖onActivityResult(int-requestCode,int-resultCode,Intent-data)
在那里,您可以刷新您的活动A
如果您从活动B
返回时需要活动A
的特殊行为,您应该使用startActivityForResult(Intent Intent,int requestCode)
而不是startActivity(Intent Intent Intent)
:
这样,您将能够通过重载ActivityResult(int requestCode、int resultCode、Intent Intent Intent)上的来检测ActivityB
在ActivityA
中的终止情况。
:
即使按下“后退”按钮终止活动b
,此功能仍有效。默认情况下,resultCode
将被RESULT\u取消
。当前刷新方案有效的可能原因是您正在标准启动模式下运行活动。这意味着每次调用startActivity(refresh)都会生成活动a的一个新实例。由于每个新实例都经过onCreate(),因此创建这些不必要的实例会使您的活动看起来像是在刷新。要正确执行此操作,您确实应该在onCreate()中标识负责“刷新”活动的代码,并将其移动到onResume(),正如下面Ovidiu所建议的那样。我有一个活动包含一个listview,其中包含从数据库检索到的5个字符串。它使用BackService方法运行,即如果数据库中有更改,我将获得一个带有字符串的新通知。如果单击该通知,listview也应该包含该字符串。OnResume()允许我这样做吗?
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == REQUEST_CODE) {
doRefresh(); // your "refresh" code
}
}