【问题标题】:Back button press need to show updated value in activity后退按钮按下需要在活动中显示更新的值
【发布时间】:2012-10-05 06:45:08
【问题描述】:

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

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

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

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

【问题讨论】:

  • @RobinHood 那太可怕了(onResume)!

标签: android android-activity


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我认为您必须使用 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;
                }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          在你的 D 活动中包含这个 sn-p。

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

          【讨论】:

            【解决方案6】:

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

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

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

            如果您关心如何在它们之间传递数据,您可能应该使用Shared preferences,因为不建议在这么多活动上加载 startActivityForResult。 还有那个gerarchy真的有必要么

            【讨论】:

              【解决方案7】:

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

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-11-28
                • 1970-01-01
                • 1970-01-01
                • 2011-11-28
                • 2013-08-08
                相关资源
                最近更新 更多