2013-03-14 137 views
4

在此首選項屏幕中,用戶將設備從其帳戶中取消鏈接。目前我只是將它作爲Unlink設備,一旦用戶點擊它,就會發生斷開連接。在PreferenceScreen的首選項中添加TextView

但我想補充一段文字是這樣的:

喬Foo的設備([email protected]) - 取消設備

鋤頭我會做到這一點?我還需要從settingsActivity動態添加用戶名。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 

    <Preference android:title="@string/pref_title_advanced_unlink" > 
     <TextView somehow must be in here 
      android:id="@id/user_name_and_email" /> 

     <intent android:action="android.intent.action.VIEW" 
      android:targetPackage="com.example.tvrplayer" 
      android:targetClass="com.example.tvrplayer.UnlinkActivity" 
      android.setflags="FLAG_ACTIVITY_CLEAR_TOP"/> 
    </Preference> 

</PreferenceScreen> 

回答

2

首選項有一個副標題叫summary。給你的偏好一個關鍵,然後你可以在你的PreferenceFragment中使用findPreference(CharSequence key)來獲得對你的偏好對象的引用,有點像調用findViewById來獲得引用視圖。然後在偏好對象上調用setSummary(int)setSummary(CharSequence)

或者,您可以通過爲首選項對象和/或子類Preference提供自定義佈局並實現一些自定義數據綁定來完成更復雜的操作。但我認爲上面應該做你想做的。

+0

謝謝,第一個選項是簡單的餡餅!像魅力一樣工作 – Harry 2013-03-14 08:10:48

2

enter image description here

的preferences.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <PreferenceCategory 
     android:key="pref_title_advanced" 
     android:title="Advanced" > 
     <CheckBoxPreference 
      android:defaultValue="false" 
      android:key="pref_title_advanced_link" 
      android:title="Link Device" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

PrefsActivity.java

private SharedPreferences mPreferences; 
private SharedPreferences.OnSharedPreferenceChangeListener mPrefListener; 
private CheckBoxPreference mCheckBoxPref; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preferences); 

    mCheckBoxPref = (CheckBoxPreference) getPreferenceScreen().findPreference(
      "pref_title_advanced_link"); 
    /* 
    * set initial summary as you desire. For example, userIdCurrent can be: 
    * "No Devices linked." 
    */ 
    mCheckBoxPref.setSummary(userIdCurrent); 

    mPrefListener = new SharedPreferences.OnSharedPreferenceChangeListener() { 
     public void onSharedPreferenceChanged(SharedPreferences prefs, 
       String key) { 
      if (key.equals("pref_title_advanced_link")) { 
       /* 
       * set post-click summary as you desire. For example, 
       * userIdPost can be: 
       * "Joe Foo's Device ([email protected])". 
       */ 
       mCheckBoxPref.setSummary(userIdPost); 
      } 
     } 
    }; 
    mPreferences.registerOnSharedPreferenceChangeListener(mPrefListener); 
}