我需要一些我正在处理的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);
}
}
}
我是否需要获取存储在共享首选项中的值并根据它做出选择?或者还有其他我想念的东西?
答案 0 :(得分:0)
编辑扩展PreferenceActivity的类并添加私有变量:private OnSharedPreferenceChangeListener listener;
在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);
}
在onPause
方法中取消注册您的监听器:
public void onPause() {
super.onPause();
PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(listener);
}
实施sendOnSMS
和sendOffSMS
方法。