gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:42:45 27 4
gpt4 key购买 nike

我正在使用 sharedpreferences 框架,但我在与其中一个首选项进行交互时遇到了一些麻烦。我想启用我的选项之一来重置我的应用程序。为此,我希望在屏幕上出现一个对话框,其中包含“确定”和“取消”。如果用户然后单击“确定”,我想做很多事情。

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

目前我有这个 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>

这是我的类(class)文件

public class Preferences extends PreferenceActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.preferences);

//TODO
// act on resetapp
// prompt onscreen confirmation.

}

public AlertDialog createDialog() {

return new AlertDialog.Builder(this)
.setTitle("Reset App?")
.setMessage("Are you sure? You will wipe all data from the app.")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Toast.makeText(getBaseContext(), "App has been reset!", Toast.LENGTH_SHORT).show();
//TODO
// clear DB
// reset sharedprefs.
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {

Toast.makeText(getBaseContext(), "App was not reset", Toast.LENGTH_SHORT).show();

}
})
.show();

}


}

最佳答案

如果有一个带有“您确定要这样做吗?”的 ListPreference 怎么样?并列出值"is"和“否”,默认值为“否”。然后像这样回复任何"is"确认:

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 {

并注册事件监听器:

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

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

关于Android sharedPreferences 使用首选项像按钮一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476981/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com