在我的Android应用程序中,我有一个显示个人资料信息的活动。然后它会打开一个新活动来更改活动。保存更改后,它会从编辑活动中关闭编辑活动,然后返回到配置文件显示活动,我需要重新启动此活动以刷新数据。
有没有办法可以重新启动打开当前活动的活动?
答案 0 :(得分:4)
有三种方法可以达到你想要的效果:
startActivityForResult()
启动个人资料活动,并在onActivityResult()
Finish()
启动个人资料活动时的活动,然后覆盖个人资料活动中的onBackPress()
以启动上一个活动,然后致电finish()
。onBackPress()
以使用标记Intent.FLAG_ACTIVITY_CLEAR_TOP
启动上一个活动,并在onNewIntent()
答案 1 :(得分:1)
Use Android Activity Result Pattern that communticates parent and child activities:
In your profile activity (parent):
@Override
public void onClick(View v) {
startActivityForResult(
new Intent(this, NameActivity.class),
1); // 1 to identify caller activity.
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
updateProfile();
}
}
In your editor activity (child):
@Override
public void onClick(View v) {
setResult(
RESULT_OK);
finish();
}
答案 2 :(得分:0)
你不必重启"重启"活动A.
您可以致电startActivityForResult(Intent, int)
开始新的活动,然后通过onActivityResult(int, int, Intent)
电话接收额外内容。
http://developer.android.com/reference/android/app/Activity.html#StartingActivities
或者,查看onResume()方法,每当您的屏幕可见时调用该方法。假设您在活动B中保留了某些状态(例如,SharedPreference或数据库记录),则在onResume()中可以刷新活动A.
答案 3 :(得分:0)
活动展示;
活动修改;
当您在活动D中启动活动M时,请不要D.finish(); 然后,当你使用M.finish()时,你不需要“重启”活动D,因为它已经存在了。
“刷新数据”有两种选择:
1.startActivityForResult正如他们所说。我不再解释了。
2.制作缓存。 将数据保存在一些静态变量或sqlite甚至sharedPreference中。然后在Activity D的onResume()中,获取这些数据并显示它们。
答案 4 :(得分:0)
试试这个:如果A正在呼叫B,当B结束时你需要更新A,然后在A发射B中使用startActivityForResult()
。当B返回时,将调用A的方法onActivityResult()
。在此方法(A)中,您可以根据需要测试某些存储值是否已更改。此时你会做类似的事情:
finish();
startActivity(intent); //start the activity A