【问题标题】:switch preference to send an sms in code切换偏好以在代码中发送短信
【发布时间】:2013-02-02 04:42:56
【问题描述】:

我需要一些关于我正在处理的 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);
    }
  }
}

我是否需要获取存储在共享首选项中的值并据此做出选择?还是我还缺少其他东西?

【问题讨论】:

  • 发布该代码将是一个好主意。尝试某事(就像您似乎已经做过的那样)比要求人们为您做这件事要好。即使你的实现很糟糕,你仍然会学到更多。

标签: android switch-statement sharedpreferences preferences


【解决方案1】:
  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 方法。

【讨论】:

  • 非常感谢,效果很好。我有一些问题,但能够自己解决。再次感谢您为我节省的大量工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多