在我的 android 应用程序中,我有一个显示个人资料信息的活动。然后它会打开一个新活动以对活动进行更改。保存更改后,它会从编辑活动中关闭编辑活动,然后返回到配置文件显示活动,我需要重新启动此活动以刷新数据。
有没有办法可以重新启动打开当前活动的活动?
在我的 android 应用程序中,我有一个显示个人资料信息的活动。然后它会打开一个新活动以对活动进行更改。保存更改后,它会从编辑活动中关闭编辑活动,然后返回到配置文件显示活动,我需要重新启动此活动以刷新数据。
有没有办法可以重新启动打开当前活动的活动?
您可以通过三种方式实现您想要的:
startActivityForResult()
并刷新您的数据来启动配置文件活动onActivityResult()
Finish()
启动配置文件活动时的活动,然后onBackPress()
在配置文件活动中覆盖以启动上一个活动,然后调用finish()
.onBackPress()
在配置文件活动中覆盖以使用标志启动上一个活动Intent.FLAG_ACTIVITY_CLEAR_TOP
并刷新您的数据onNewIntent()
使用传达父子活动的Android Activity Result Pattern :
在您的个人资料活动(父母)中:
@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();
}
}
在您的编辑活动(子)中:
@Override
public void onClick(View v) {
setResult(
RESULT_OK);
finish();
}
You won't have to "restart" Activity A.
You can call startActivityForResult(Intent, int)
to start your new Activity, and then receive extras via the onActivityResult(int, int, Intent)
call.
http://developer.android.com/reference/android/app/Activity.html#StartingActivities
Alternatively, look into the onResume() method, which is called every time your screen becomes visible. Assuming you persisted some state in Activity B (e.g. a SharedPreference or a database record), in onResume() you can refresh Activity A.
试试这个:如果 A 正在调用 B 并且当 B 结束时您需要更新 A,然后在 A 中使用startActivityForResult()
. 当 B 返回时,onActivityResult()
将调用 A 的方法。在这种(A 的)方法中,如有必要,您可以测试某些存储的值是否已更改。此时,您可以执行以下操作:
finish();
startActivity(intent); //start the activity A
活动展示;
活动修改;
当你在你的活动 D 中开始活动 M 时,不要 D.finish(); 然后,当你 M.finish() 时,你不需要“重新启动”活动 D,因为它已经在那里了。
您有两种选择来“刷新数据”:
1.startActivityForResult如他们所说。我不再解释。
2.做一个缓存。将数据保存在一些静态变量或 sqlite 甚至 sharedPreference 中。然后在 Activity D 的 onResume() 中,获取这些数据并显示它们。