如何使用以编程方式填充的值(例如:版本,型号......)制作首选项?
答案 0 :(得分:38)
为什么不直接使用android.preference.Preference?
<Preference
android:key="version"
android:title="@string/version" />
没有编辑对话框,没有更多属性,只有信息!!
//Set the version string in your code
findPreference("version").setSummary(version);
答案 1 :(得分:16)
我用以下内容完成了这个:
在我的application_preferences.xml中,我有以下偏好。这使它仍然是黑色(不是灰色),但仍然无法由用户编辑。将其变为灰色会使其难以阅读。
<EditTextPreference
android:key="version"
android:title="@string/version"
android:enabled="false"
android:selectable="false"
android:persistent="false"
android:shouldDisableView="false"/>
在首选项活动onCreate方法中,获取版本首选项并将标题设置为应用程序版本。
EditTextPreference versionPref = (EditTextPreference)findPreference("version");
String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
versionPref.setTitle(getString(R.string.version) + ": " + version);
答案 2 :(得分:3)
您可以在代码中设置首选项,并在填写代码之前检查它是否已填充。只要您不授予用户更改此信息的权限,他们所能做的就是“清除本地数据”,如果您正确执行此操作,将导致程序重新填充数据。
我使用这种技术来存储设备的唯一ID,登录的用户等等。用户甚至(并且绝不应该)知道我要跟踪的内容,他们只知道他们有一个平滑的程序做他们需要做的事。
示例:
SharedPreferences settings = context.getSharedPreferences("preferanceName", 0);
SharedPreferences.Editor editor = settings.edit();
int value = foo;
editor.putInt("ValueToStore", value);
editor.commit();
答案 3 :(得分:0)
Kevin Westwood非常感谢!!
在我的情况下,我只是将 setTitle 更改为 setSummary ,因此该值在标题后面可见。
String serverUrl = "http://...";
EditTextPreference pref = (EditTextPreference)findPreference("serverPrefKey");
pref.setSummary(serverUrl);