如何使只读(编程填充)首选项



如何使首选项与编程填充值(如:版本,型号…)?

为什么不直接使用android.preference.Preference呢?

<Preference 
 android:key="version"
 android:title="@string/version" />

没有编辑对话框,没有更多的属性,只有信息!

//Set the version string in your code 
findPreference("version").setSummary(version);

我是这样做的:

在我的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);

您可以在代码中设置首选项,并在填充之前检查它是否已经填充。只要您不允许用户访问更改这些信息,他们所能做的就是"清除本地数据",如果您做得对,这将导致程序重新填充数据。

我使用这种技术来存储设备的唯一id,谁登录了,等等。用户甚至不知道(也不应该)我记录了什么,他们只知道他们有一个流畅的程序,可以做他们需要做的事情。

的例子:

SharedPreferences settings = context.getSharedPreferences("preferanceName", 0);
SharedPreferences.Editor editor = settings.edit();
int value = foo;
editor.putInt("ValueToStore", value);
editor.commit();

Kevin Westwood这是完美的谢谢!!

在我的例子中,我只是将setTitle更改为setSummary,因此该值在标题下方可见。

    String serverUrl = "http://...";
    EditTextPreference pref = (EditTextPreference)findPreference("serverPrefKey");
    pref.setSummary(serverUrl);

最新更新