关于android:后退按钮需要显示活动中的更新值

Back button press need to show updated value in 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"中的值?


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

//——————————————————存储数据————————————————————————————————————————————————————————————————————————————————————————————————

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

//——————————————获取数据———————————————————

1
2
3
4
5
6
7
8
9
10
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;
            }

你会想要一大堆的startActivityForResult(),基本上把它们从d链接到a。

请看这里:我如何在Android上的活动之间传递值?

或者,您可以将该值存储为SharedPreferences,然后在返回到原始活动后查找它。


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


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

如果您有一个数据库,那么将数据从您的onResume()中的数据库存储到Activity A中。


这可以通过两种方式实现:

  • 使用共享首选项并存储更新的值,然后在活动A的onresume()中,从相同的共享首选项中读取该值并更新该值。

  • 使用StartActivityForResult启动活动,并使用Intent对象收集值,然后使用SetResult将其传递回以前的活动。


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

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

    1
    2
    3
    4
    @Override
    public void onResume(){
        //Update your data here
    }

    如果您关心的是如何在它们之间传递数据,那么您可能应该使用共享的首选项,因为对于如此多的活动,不建议使用StartActivityForResult。还有,是否真的有必要这样做?如果用户一更新数据,您就可以简单地启动ActivityA并直接将数据传递给它,这将更容易。


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

    1
    2
    3
    4
    @Override
     public void onBackPressed(){
         aMethodToUpdateYourActivityA();
        }