后退按钮需要显示活动中的更新值

时间:2012-10-05 06:45:08

标签: android android-activity

我有活动A,我可以导航到A->B->C->D

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

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

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

7 个答案:

答案 0 :(得分:4)

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

见这里:How can I pass values between Activities on Android?

或者,您可以将值存储为SharedPreferences,稍后在返回原始活动时查看。

答案 1 :(得分: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;
            }

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

在您的D活动中包含此代码段。

@Override
 public void onBackPressed(){
     aMethodToUpdateYourActivityA();
    }

答案 5 :(得分:0)

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

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

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

如果你担心如何在它们之间传递数据,你可能应该使用Shared preferences,因为在这么多的活动中没有真正建议加载startActivityForResult。 是否真的有必要拥有这种层次结构?如果用户更新数据,您只需启动ActivityA并直接将数据传递给它。这将更容易。

答案 6 :(得分:0)

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

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

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