【问题标题】:How to handle ToggleButton state in OnPause and OnResume state如何在 OnPause 和 OnResume 状态下处理 ToggleButton 状态
【发布时间】:2019-01-06 05:42:36
【问题描述】:

我在onResume()onPause() 状态上遇到了切换按钮状态的问题。

Activity - A(第一个用户打开按钮)然后返回到 Activity - B,然后它会返回到 Activity - A 然后我想要切换按钮是 ON 而不是 OFF,如何在 android 中处理这种状态。

【问题讨论】:

  • 您是否在您的Activity 中致电override onResumeonPause?如果是这样,请致电super.onResume()super.onPause()
  • 是的,我实现了这些方法
  • 在关闭和重新打开应用程序后是否想要相同的切换按钮状态?如果是这样,请尝试使用共享首选项
  • 不整合共享偏好,它现在可以正常工作@MangaldeepPannu

标签: android onresume onpause android-togglebutton activity-state


【解决方案1】:

默认情况下,Activity 处理具有id 属性的组件状态。

如果不是这样,您可以使用onSaveInstanceStateonRestoreInstanceState 手动处理组件状态:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);

  savedInstanceState.putBoolean("Toggle1", toggle.isChecked());
  // etc.
}

并恢复状态:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);

  boolean toggle1State = savedInstanceState.getBoolean("Toggle1");
  toggle1.setCheched(toggle1State);
}

【讨论】:

    【解决方案2】:
     toggle_relative.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
            @Override
            public void onToggle(boolean on) {
                if (on == true){
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putBoolean("toggle_relative", true); // value to store
                    editor.commit();
                    Toast.makeText(getContext(),"Relatives will be notified in case of accidental situation",Toast.LENGTH_LONG).show();
                }else {
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putBoolean("toggle_relative", false); // value to store
                    editor.commit();
                }
            }
        });
    
    
    
    
    
    
    
      @Override
    public void onResume() {
        super.onResume();
    
        boolean boll_toggle_relative = preferences.getBoolean("toggle_relative", false);  //default is true
        if (boll_toggle_relative == true)
        {
            toggle_relative.setToggleOn();
        }
        else
        {
            toggle_relative.setToggleOff();
        }
    
    }
    

    【讨论】:

    • SharedPreferences 在这种情况下是不合适的,如果你午餐不止一个 Activity 实例会导致意外行为
    • 但它现在工作正常,如果它产生任何问题,那么我会更改代码,@Mosius
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多