切换首选项以在代码中发送短信

时间:2013-02-02 04:42:57

标签: android switch-statement sharedpreferences preferences

我需要一些我正在处理的android项目的帮助。我正在尝试使用切换首选项来发送某个文本。基本上,用户将开关从关闭切换到开启,我希望手机发送“开”的文本。然后,当用户将开关从打开变为关闭时,它会发送一个“关闭”的文本。我只需要能够看到开关的当前状态是什么,然后如果它关闭,则调用“开启”方法,反之亦然。

我从来没有问过这样的问题,所以我真的不知道要发布的代码的哪一部分。(如果被问到,我可以发布我的大部分代码。)我认为这与我的代码有关。 onPreferenceChangeListener,但我不确定如何实现它。有什么想法吗?

编辑:这是主要的活动类:

public class MainActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {

public static final String KEY_ROOM1_SWITCH = "switch_room_1";

private SwitchPreference mSwitchPreference1;

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
//This is a sample of one of 4 switches that are being used. They are all basically the same, but with different variables
    if (key.equals(KEY_ROOM1_SWITCH)) {
        boolean checkedornot1;
        SharedPreferences myPreference=PreferenceManager.getDefaultSharedPreferences(this);
        checkedornot1 = myPreference.getBoolean("switch_room_1", false);
        if (checkedornot1 = true)
        mSwitchPreference1.setChecked(true);
        else
        mSwitchPreference1.setChecked(false);
    }
  }
}

我是否需要获取存储在共享首选项中的值并根据它做出选择?或者还有其他我想念的东西?

1 个答案:

答案 0 :(得分:0)

  1. 编辑扩展PreferenceActivity的类并添加私有变量:private OnSharedPreferenceChangeListener listener;

  2. onResume方法中创建并注册您的监听器:

      public void onResume() {
      super.onResume();
      listener = new OnSharedPreferenceChangeListener() {
        public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
          if (key.contains("your switchpreference key name")
          if (sp.getBoolean("your switchpreference key name",false) {
            sendOnSMS();
          } else {
            sendOffSMS();
          }
      }
      PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(listener);
    }
    
  3. onPause方法中取消注册您的监听器:

    public void onPause() {
      super.onPause();
      PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(listener);
    }
    
  4. 实施sendOnSMSsendOffSMS方法。