切换具有偏好活动的按钮

时间:2015-08-19 21:40:54

标签: java android xml

我想在我的偏好/设置活动中使用切换按钮,以在开关关闭时禁用我的应用程序中的某些代码。请任何人都可以使用使用切换/切换按钮的共享首选项给我一些教程。 我有这个代码,但无法弄清楚我的点击监听器的位置以及如何使用它以便在按钮设置为关闭时禁用我的代码的某一部分

preference.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);
}}

在主要活动中

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

2 个答案:

答案 0 :(得分:8)

这是一个简单的例子:

$('#myForm').clearInputs();

在您的代码中:

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

SwitchPreference会自动保存您的键值。你不必为它编写代码。它将保存为布尔值。

然后,您可以从任何您想要的活动中检索它:

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

答案 1 :(得分:0)

使用这些方法保存首选项和加载首选项:

    //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;
}

}

使用此方法保存值时,您可以这样做:

    boolean toggleButton = true;
    savePrefs("toggle", toggleButton);

检索值时请遵循以下示例:

boolean toggleButton = loadPrefs("toggle", toggleButton);