简体   繁体   English

切换具有偏好活动的按钮

[英]switch button with preference activity

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: preference.xml:

 <SwitchPreference
android:key="test"
android:title="Test" />

PreferenceActivity: 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);
    }
});

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. SwitchPreference将自动保存您的键值。 You don't have to write code for it. 您不必为其编写代码。 It will be saved as a boolean. 它将保存为布尔值。

You can then retrieve it from any activity you want like: 然后,您可以从任何您想要的活动中检索它:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean test = sharedPreferences.getBoolean("test", false);

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM