2013-03-14 3 views
4

В этом режиме экрана экрана пользователь отключает устройство от своей учетной записи. На данный момент у меня есть устройство Unlink, как только пользователь нажимает на него, происходит отмена.Добавление текстового элемента в предпочтение предпочтения. Экран предпочтения

Но я хотел бы добавить кусок текста, как это:

Устройство Джо Foo (в [email protected]) - Unlink Устройство

Культиватор бы мне это сделать? Мне также нужно динамически добавлять имя пользователя из 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. Придайте предпочтение ключу, затем вы можете использовать findPreference(CharSequence key) в своем PreferenceFragment, чтобы получить ссылку на ваш объект предпочтения, вроде как позвонить findViewById, чтобы получить ссылки на Views. Затем вызовите setSummary(int) или setSummary(CharSequence) на объект предпочтения.

В качестве альтернативы вы можете сделать что-то совершенно более сложное, предоставив настраиваемый макет для ваших объектов предпочтений и/или подкласса Preference и реализовать некоторые настраиваемые привязки данных. Но я думаю, что вышеупомянутое должно делать то, что вы хотите.

+0

Спасибо, первый вариант был прост, как пирог! Работали как шарм – Harry

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); 
} 
Смежные вопросы