java 具有偏好活动的切换按钮
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/32106114/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
switch button with preference activity
提问by Blacklotis
I want to use switch button in my preference/settings activity to disable some code in my app when the switch is off. Please can anyone give me a little tutorial using shared preferences that uses switch/toggle button. I have this code but can't figure out where to put my on click listener and how to use it so it disables a certain part of my code when the button is set to off
我想在我的首选项/设置活动中使用开关按钮在开关关闭时禁用我的应用程序中的某些代码。请任何人都可以使用使用开关/切换按钮的共享首选项给我一个小教程。我有这段代码,但不知道把我的点击监听器放在哪里以及如何使用它,所以当按钮设置为关闭时它会禁用我的代码的某个部分
preference.xml:
首选项.xml:
<SwitchPreference
android:key="test"
android:title="Test" />
PreferenceActivity:
偏好活动:
public class TestPrefActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.sample);
}}
In main activity
在主要活动中
SharedPreferences sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(MainActivity.this);
sharedPrefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
boolean test = sharedPreferences.getBoolean("test", false);
Log.e(TAG, "Value:" + test);
}
});
回答by Hussein El Feky
Here is a simple example:
这是一个简单的例子:
<SwitchPreference
android:key="test"
android:title="Test"
android:defaultValue="false" />
In your code:
在您的代码中:
public class TestPrefActivity extends PreferenceActivity implements onSharedPreferenceChangeListener {
public SwitchPreference testPref;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.sample);
testPref = (SwitchPreference) findPreference("test"); //Preference Key
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("test")) {
boolean test = sharedPreferences.getBoolean("test", false);
//Do whatever you want here. This is an example.
if (test) {
testPref.setSummary("Enabled");
} else {
testPref.setSummary("Disabled");
}
}
@Override
public void onResume() {
super.onResume();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(TestPrefActivity.this);
boolean test = preferences.getBoolean("test", false);
if (test) {
testPref.setSummary("Enabled");
} else {
testPref.setSummary("Disabled");
}
}
}
The SwitchPreference will save your key value automatically. You don't have to write code for it. It will be saved as a boolean.
SwitchPreference 将自动保存您的键值。您不必为它编写代码。它将被保存为布尔值。
You can then retrieve it from any activity you want like:
然后,您可以从您想要的任何活动中检索它:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean test = sharedPreferences.getBoolean("test", false);
回答by joshgoldeneagle
Use these methods to save preferences and load preferences:
使用这些方法来保存首选项和加载首选项:
//save prefs
public void savePrefs(String key, Boolean value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(key, value);
editor.commit();
}
//get prefs
private Boolean loadPrefs(String key, Boolean value){
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Boolean data = sharedPreferences.getBoolean(key, value);
return data;
}
}
}
When you are saving values with this method you can do so like this:
当您使用此方法保存值时,您可以这样做:
boolean toggleButton = true;
savePrefs("toggle", toggleButton);
When you are retrieving values follow this example:
当您检索值时,请遵循以下示例:
boolean toggleButton = loadPrefs("toggle", toggleButton);