Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SharedReferences使用首选项来像按钮一样工作_Android_Sharedpreferences - Fatal编程技术网

Android SharedReferences使用首选项来像按钮一样工作

Android SharedReferences使用首选项来像按钮一样工作,android,sharedpreferences,Android,Sharedpreferences,我使用的是SharedReferences框架,但在与其中一个首选项交互时遇到了一些问题。我想启用我的一个选项来重置我的应用程序。要做到这一点,我想在屏幕上出现一个对话框,其中包含“确定”和“取消”。如果用户点击OK,我想做一些事情 我可以使用ImageView侦听器在正常活动中编写所有这些内容。但是在SharedReferences框架中,我不知道如何添加侦听器和操作。我想作为额外的奖励,我还需要与当前的SharedReferences状态进行交互 现在我有了这个XML <Prefere

我使用的是SharedReferences框架,但在与其中一个首选项交互时遇到了一些问题。我想启用我的一个选项来重置我的应用程序。要做到这一点,我想在屏幕上出现一个对话框,其中包含“确定”和“取消”。如果用户点击OK,我想做一些事情

我可以使用ImageView侦听器在正常活动中编写所有这些内容。但是在SharedReferences框架中,我不知道如何添加侦听器和操作。我想作为额外的奖励,我还需要与当前的SharedReferences状态进行交互

现在我有了这个XML

<PreferenceCategory  android:title="Reset App">

    <Preference
        android:title="Reset App?"
        android:summary="Click here to reset the App to defaults."
        android:key="resetapp" />

</PreferenceCategory>


<PreferenceCategory  android:title="General Settings">
 <CheckBoxPreference
         android:title="Enable Sounds?"
         android:defaultValue="true"
         android:summary="A Tick here will enable sounds throughout body-mix-ology."
         android:key="enablesounds" />
 <CheckBoxPreference
         android:title="High performance Phone?"
         android:defaultValue="false"
         android:summary="If you have a high performance phone tick here to speed up body switching."
         android:key="highperformancephone" />
  </PreferenceCategory>

让ListPreference显示“您确定要这样做吗?”并用默认值“否”列出值“是”和“否”,怎么样。然后对任何“是”的确认做出如下回应:

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    if (key.equals("resetapp") && prefs.getString(key,"").equals("Yes")) {
        // reset the value to "No" so that next time a preference change will be triggered
        prefs.edit().putString(key, "No").commit();

        // now do your awesome reset stuff ...
        Preference someOtherPref = findPreference(otherKey);
        ...
    }
}
别忘了将类定义更改为:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
并注册eventlistener:

@Override
protected void onResume() {
    super.onResume();
    getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
}

让ListPreference显示“您确定要这样做吗?”并用默认值“否”列出值“是”和“否”,怎么样。然后对任何“是”的确认做出如下回应:

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
    if (key.equals("resetapp") && prefs.getString(key,"").equals("Yes")) {
        // reset the value to "No" so that next time a preference change will be triggered
        prefs.edit().putString(key, "No").commit();

        // now do your awesome reset stuff ...
        Preference someOtherPref = findPreference(otherKey);
        ...
    }
}
别忘了将类定义更改为:

public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {
并注册eventlistener:

@Override
protected void onResume() {
    super.onResume();
    getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
}