gpt4 book ai didi

java - 首选项默认值和 PreferenceActivity

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

使用 Android 注释。我的偏好:

@SharedPref(value = SharedPref.Scope.APPLICATION_DEFAULT)
public interface MyPreferences {
@DefaultBoolean(true)
boolean myOption();
}

preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="myOption"
android:title="My Option Name"/>
</PreferenceScreen>

我的PreferencesActivity:

public class MyPreferencesActivity extends PreferenceActivity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}

问题是:尽管 myOption 的默认值是 true(事实上 - 在调用 MyPreferences_.myOption().get() 时)默认情况下,首选项 Activity 中的复选框未选中。

String 首选项也是如此。它们返回在 @DefaultString 注释中给出的默认字符串,但它不会显示在 PreferenceActivity 中。只有在我更改 Activity 的首选项值后,它才能正确显示。

最佳答案

我通过以下方式解决了默认值重复问题:

values/preferences_defaults.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="default_myOption">true</bool>
<string name="default_myString">my string</string>
</resources>

偏好:

@SharedPref(value = SharedPref.Scope.APPLICATION_DEFAULT)
public interface MyPreferences {
@DefaultRes(R.bool.default_myOption)
boolean myOption();

@DefaultRes(R.string.default_myString)
String myString();
}

preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="myOption"
android:defaultValue="@bool/default_myOption"
android:title="My Option Name"/>
<EditTextPreference
android:key="myString"
android:defaultValue="@string/default_myString"
android:title="My String Option"/>
</PreferenceScreen>

现在我可以在一个 XML 文件中为注释和 PreferenceActivity 定义默认值。

关于java - 首选项默认值和 PreferenceActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319847/

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