2011-12-29 74 views

回答

2

您可以在您的代碼中設置首選項,並檢查它在填充前是否已被填充。只要您不允許用戶更改此信息,他們所能做的只是「清除本地數據」,如果您做得對,這將導致程序重新填充數據。

我使用這種技術來存儲設備的唯一ID,登錄等等。用戶甚至不會(也不應該)知道我跟蹤的內容,他們只知道他們有一個流暢的程序這就是他們需要它做的事情。

例子:

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

謝謝。是否有可能使「preferencses.xml」中的項目顯示爲「灰色」(只讀)文本而無法進行交互式編輯? – yuriy 2011-12-29 18:46:50

+0

我做了我自己的自定義偏好活動,所以我不能告訴你。聽起來像是另一個問題:D – Pyrodante 2011-12-29 18:50:35

+0

@yuriy:是的,您可以通過將android:enabled =「false」添加到XML來使Preferences成爲只讀。詳情請看這裏:http://developer.android.com/reference/android/preference/Preference.html – 2011-12-29 21:03:54

15

我做到了這一點與以下:

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

謝謝,正是我在找的東西。 – Vyrx 2012-12-19 15:52:31

+1

正是我在尋找 – 2015-11-27 23:28:16

34

爲什麼不直接使用android.preference.Preference?

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

沒有編輯對話框,沒有更多的屬性和信息!

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

任何方式來使這反映清單中的versionString? – scone 2013-12-01 12:28:24

+1

@scone String version = getPackageManager()。getPackageInfo(getPackageName(),0).versionName; – tpbapp 2014-04-04 05:27:13

+1

@tpbapp我希望有一種無代碼的方法。 – scone 2014-04-30 23:05:32

0

凱文韋斯特伍德它是完美的謝謝!

在我來說,我只是改變了的setTitlesetSummary,所以價值波紋管標題可見。

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