4

在此首选项屏幕中,用户将设备与他的帐户取消链接。目前我只是将它作为 Unlink 设备,一旦用户单击它,就会发生取消链接。

但我想添加这样一段文字:

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>
4

2 回答 2

2

首选项有一个名为summary. 给你的偏好一个键,然后你可以findPreference(CharSequence key)在你的 PreferenceFragment 中使用来获取对你的偏好对象的引用,有点像调用findViewById来获取对视图的引用。然后在首选项对象上调用setSummary(int)或。setSummary(CharSequence)

Preference或者,您可以通过为您的偏好对象和/或子类提供自定义布局并实现一些自定义数据绑定来做一些更复杂的事情。但我认为上面应该做你想要的。

于 2013-03-14T07:53:00.360 回答
2

在此处输入图像描述

首选项.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);
}
于 2013-03-14T08:28:12.567 回答