2011-05-07 58 views
3

我覺得我必須錯過一些東西,但我只是不明白它是什麼...我有一個PreferenceActivity與一堆各種喜好(有些是列表,一些只是文本字段),它都可以正常工作,但除非我將每個項目的值明確寫入彙總(顯然不是爲此目的),否則我不會看到項目如何(或在哪裏)顯示它們當前設置的內容。當我點擊它們時,各種視圖顯示了正確的設置,但這顯然不是這個意圖。有沒有辦法顯示PreferenceActivity的當前設置?

我是否必須創建自己的自定義List項目,該項目有一個顯示每個元素的當前填充值的字段?

+0

[如何在首選項摘要中顯示Android偏好設置的當前值?](https://stackoverflow.com/questions/531427/how-do-i-display-the-current-value-of -an-android-preference-in-the-preference-su) – 2017-05-23 14:15:58

回答

2

不幸的是,默認的PreferencesActivity並不顯示這些值:如果您希望顯示的所有首選項一目瞭然,那麼您正在做的事情是真的要走的路。

+0

我有一種感覺,情況就是這樣,但它只是奇怪的是,它們會包含這樣一個無用的機制......有什麼意義?它沒有連接到我的默認共享首選項,對不對?所以,這不是簡單的設置(最初我想也許是這樣,關鍵字段用來查看我的共享首選項,但似乎並不是這樣)。所以......這只是一個List視圖,它保存了它自己的值?我肯定錯過了什麼! – 2011-05-07 16:54:22

+2

嗯,它實際上是連接到你的默認共享首選項,所以除非你在別的地方犯了一個錯誤,那麼你應該工作。如果您在'onCreate()'方法中添加'addPreferencesFromResource(R.xml.prefs);'調用,它會將其拉高。這假設您的XML首選項文件在* res/xml *文件夾中被稱爲* prefs.xml *。 – Femi 2011-05-07 17:07:31

+0

有意思......我爲我的xml文件有一個不同的名字......我會看看是否解決了這個不一致問題。 – 2011-05-16 19:42:40

1

創建另一個首選項字段:摘要。 每當更改首選項字段或顯示首選項屏幕時更新它。 用戶將能夠「更新」摘要值,但每當他/她輸入首選項時,都會顯示正確的值。

0

對於ListPreferences,這是內置的,你可以使用

android:summary="Actual value: %s" 

EditTextPreferences,您可以easily create your own class

package your.package.preference; 

import android.content.Context; 
import android.util.AttributeSet; 

public class EditTextPreference extends android.preference.EditTextPreference{ 
     public EditTextPreference(Context context, AttributeSet attrs, int defStyle) { 
      super(context, attrs, defStyle); 
     } 

     public EditTextPreference(Context context, AttributeSet attrs) { 
      super(context, attrs); 
     } 

     public EditTextPreference(Context context) { 
      super(context); 
     } 

     @Override 
     public CharSequence getSummary() { 
      String summary = super.getSummary().toString(); 
      return String.format(summary, getText()); 
     } 
    } 

而在你的XML使用:

<your.package.EditTextPreference 
       android:key="pref_alpha" 
       android:summary="Actual value: %s" 
       android:title="Title" 
       android:defaultValue="default" 
       /> 
相關問題