5

我有可以导航到的活动 AA->B->C->D

Activity D我有一个按钮,如果用户按下此按钮,它将转到 Activity A. 在这里,我将创建一个新实例,用户可以在这里更新值。

我完成了活动,它会转到Activity D,从Activity D用户按下并会来 。Back Button
D->C->B->A
Activity A

我需要显示更新后的值Activity A,如何更新“活动 A”中的值?

4

7 回答 7

4

您将想要拥有一大堆startActivityForResult()s,并且基本上将它们从 D 链接到 A。

请参阅此处:如何在 Android 上的活动之间传递值?

或者,您可以将值存储为 aSharedPreferences并在稍后返回原始 Activity 后查找它。

于 2012-10-05T06:49:27.573 回答
4

我认为您必须使用SharedPreference来保存您的后退按钮单击或使用静态变量的数据。

// ------------------ 存储数据 ------------------

SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putInt("key", countValue);
                editor.commit();

// --------------------- 获取数据 ------------------

if ((keyCode == KeyEvent.KEYCODE_BACK)) {
    Intent home=new Intent(PersentActivity.this,DesiredActivity.class);

                 sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);   
          int countValue = sharedPreferences.getInt("key", 0);

                startActivity(home);

                return true;
            }
于 2012-10-05T07:07:10.480 回答
2

用于Shared Preferences保存您的数据。因此,您将获得所有活动中的数据。

于 2012-10-05T06:50:48.640 回答
1

如果您在更新时不存储数据Activity A,我认为最好将它们存储在自身的静态变量中Activity A并将数据加载到您的onResume().

如果您有数据库,则将数据Activity A从数据库中存储到onResume().

于 2012-10-05T07:42:56.153 回答
0

将此片段包含在您的 D 活动中。

@Override
 public void onBackPressed(){
     aMethodToUpdateYourActivityA();
    }
于 2012-10-05T06:49:16.100 回答
0

您可以在此处了解有关活动生命周期和管理数据的更多信息活动

至于您的问题,您应该对 Activity A 中的 onResume 方法中的数据进行任何更新。

@Override
public void onResume(){
    //Update your data here
}

如果您关心如何在它们之间传递数据,您可能应该使用共享首选项,因为不建议在这么多活动上加载 startActivityForResult。也真的有必要拥有那个gerarchy吗?如果用户更新数据后,您只需启动ActivityA并直接将数据传递给它会更容易。

于 2012-10-05T06:53:11.317 回答
0

这可以通过两种方式完成:

  1. 使用共享偏好并存储您更新的值,然后活动 A 的 onResume(),从相同的共享偏好中读取它并更新值。

  2. 使用 startActivityForResult 启动活动,并使用意图对象收集值并使用 setResult 将其传递回之前的活动。

于 2012-10-05T06:57:02.367 回答