在PreferenceScreen的Preference中添加一个TextView

4
在这个偏好屏幕中,用户将设备从他的账户中取消链接。目前我只是写成取消链接设备,一旦用户点击它,就会发生取消链接的操作。
但我想添加一个像这样的文本:
Joe Foo的设备(joefoo@gmail.com)- 取消链接设备
我该怎么做?我还需要从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个回答

3

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 (joefoo@gmail.com)".
                 */
                mCheckBoxPref.setSummary(userIdPost);
            }
        }
    };
    mPreferences.registerOnSharedPreferenceChangeListener(mPrefListener);
}

2

偏好设置有一个名为“summary”的副标题。给您的偏好设置一个键,然后您可以在PreferenceFragment中使用findPreference(CharSequence key)来获取对您的偏好设置对象的引用,类似于调用findViewById来获取对视图的引用。然后在偏好设置对象上调用setSummary(int)setSummary(CharSequence)

或者,您可以通过为偏好对象提供自定义布局和/或子类化Preference并实现一些自定义数据绑定来执行完全更复杂的操作。但我想上述方法应该可以满足您的需求。


谢谢,第一个选项简单极了!像魔法般运作。 - Harry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接