更改Android Switch状态

前端之家收集整理的这篇文章主要介绍了更改Android Switch状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在开发一个具有菜单的应用程序,菜单上的一个选项是“设置”,用户基本上可以决定关闭声音和其他类似的东西.我目前在“设置”活动中有两个开关.到目前为止,这是Settings活动的 java代码
  1. import android.support.v7.app.ActionBarActivity;
  2.  
  3.  
  4. public class Options extends ActionBarActivity {
  5. private Switch ding;
  6. private Switch countdown;
  7. public boolean isDingChecked;
  8. public boolean isCountdownChecked;
  9. public static final String PREFS = "examplePrefs";
  10.  
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_options);
  15. ding = (Switch) findViewById(R.id.switch1);
  16. ding.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  17. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  18.  
  19. SharedPreferences examplePrefs = getSharedPreferences(PREFS,0);
  20. Editor editor = examplePrefs.edit();
  21. editor.putBoolean("userMessage",isChecked);
  22. editor.commit();
  23.  
  24. //System.out.println(examplePrefs.getBoolean("userMessage",isChecked));
  25. isDingChecked = examplePrefs.getBoolean("userMessage",isChecked);
  26. System.out.println(isDingChecked + " is ding checked");
  27. ding.setChecked(isDingChecked);
  28. }
  29. });
  30.  
  31. countdown = (Switch) findViewById(R.id.switch2);
  32. countdown.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  33. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  34. // do something,the isChecked will be
  35. // true if the switch is in the On position
  36. isCountdownChecked = isChecked;
  37.  
  38. }
  39. });
  40. }
  41. }

我可以在我的其他活动中使用布尔值,因此SharedPreference工作正常.但是,当我返回到菜单活动并返回到此选项活动时,无论用户声明什么,开关的状态都会恢复为默认值true.无论如何我可以解决这个问题吗?

  1. ding.setChecked(isDingChecked)

我猜不是真的做了什么.我知道我过去发过一个类似的问题,只是一个人没有太多的活动,我已经在这个问题上工作了很长一段时间.谢谢!

解决方法

尝试这样的事情:
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_options);
  5. ding = (Switch) findViewById(R.id.switch1);
  6.  
  7. //grab prefs first
  8. final SharedPreferences examplePrefs = getSharedPreferences(PREFS,0);
  9. final Editor editor = examplePrefs.edit();
  10. ding.setChecked(examplePrefs.getBoolean("your_key",false)); //false default
  11.  
  12.  
  13. ding.setOnCheckedChangeListener(new OnCheckedChangeListener() {
  14. public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
  15.  
  16. //commit prefs on change
  17. editor.putBoolean("your_key",isChecked);
  18. editor.commit();
  19.  
  20. System.out.println(isDingChecked + " is ding checked");
  21. }
  22. });

猜你在找的Android相关文章