2

在我的 android 应用程序中,我有一个显示个人资料信息的活动。然后它会打开一个新活动以对活动进行更改。保存更改后,它会从编辑活动中关闭编辑活动,然后返回到配置文件显示活动,我需要重新启动此活动以刷新数据。

有没有办法可以重新启动打开当前活动的活动?

4

5 回答 5

4

您可以通过三种方式实现您想要的:

  1. 通过调用startActivityForResult()并刷新您的数据来启动配置文件活动onActivityResult()
  2. Finish()启动配置文件活动时的活动,然后onBackPress()在配置文件活动中覆盖以启动上一个活动,然后调用finish().
  3. onBackPress()在配置文件活动中覆盖以使用标志启动上一个活动Intent.FLAG_ACTIVITY_CLEAR_TOP并刷新您的数据onNewIntent()
于 2013-07-18T02:57:37.117 回答
2

使用传达父子活动的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();
  }
于 2017-07-11T08:05:09.217 回答
0

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.

于 2013-07-18T02:48:57.763 回答
0

试试这个:如果 A 正在调用 B 并且当 B 结束时您需要更新 A,然后在 A 中使用startActivityForResult(). 当 B 返回时,onActivityResult()将调用 A 的方法。在这种(A 的)方法中,如有必要,您可以测试某些存储的值是否已更改。此时,您可以执行以下操作:

finish();
startActivity(intent); //start the activity A
于 2013-07-18T05:49:13.033 回答
0

活动展示;

活动修改;

当你在你的活动 D 中开始活动 M 时,不要 D.finish(); 然后,当你 M.finish() 时,你不需要“重新启动”活动 D,因为它已经在那里了。

您有两种选择来“刷新数据”:

1.startActivityForResult如他们所说。我不再解释。

2.做一个缓存。将数据保存在一些静态变量或 sqlite 甚至 sharedPreference 中。然后在 Activity D 的 onResume() 中,获取这些数据并显示它们。

于 2013-07-18T03:21:39.327 回答