我正在我的 Android 应用程序中创建备份和恢复选项。然后打开首选项“我想要一个备份按钮和一个恢复按钮”。 我在 xml/preference.xml 文件中制作按钮,如下所示:
<PreferenceCategory android:title="Backup">
<Preference
android:key="backup"
android:title="Backup"
android:summary="Make a backup of shows"
/>
<Preference
android:key="restore"
android:title="Restore"
android:summary="Restore shows from backup"
/>
</PreferenceCategory>
我的首选项类实现了 OnSharedPreferenceChangeListener,并将 getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
添加到 onResume()
和 getPreferenceScreen( ).getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
到 OnPause()
。
i 实现 onSharedPreferenceChanged:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Let's do something when my counter preference value changes
if (key.equals("backup")) {
Toast.makeText(this, "Backup button pressed", Toast.LENGTH_SHORT).show();
} else if (key.equals("restore")) {
Toast.makeText(this, "Restore button pressed", Toast.LENGTH_SHORT).show();
}
}
但是当我按下其中一个按钮时,没有显示任何 toast 。我在 CheckBoxPreference 上工作得很好,但我只需要一个按钮,而不是复选框。有人可以帮忙吗?
最佳答案
如果它只是一个简单的按钮,则没有可以更改的首选项,因此在这种情况下不会调用您的onSharedPreferenceChanged
。
改用 OnClick 监听器:
OnPreferenceClickListener btnListener = new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
final String key = preference.getKey();
if (key.equals("backup")) {
// show toast
return true; // we handled the click
}
return false; // we didn't handle the click
}
};
Preference prefBtn = findPreference("backup");
prefBtn.setOnPreferenceClickListener(btnListener);
关于安卓偏好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5550639/