在此首选项屏幕中,用户取消设备与其帐户的链接。目前我将其作为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>
答案 0 :(得分:2)
首选项有一个名为summary
的副标题。为您的首选项提供密钥,然后您可以在PreferenceFragment中使用findPreference(CharSequence key)
来获取对首选项对象的引用,有点像调用findViewById
来获取对Views的引用。然后在首选项对象上调用setSummary(int)
或setSummary(CharSequence)
。
或者,您可以通过为首选项对象和/或子类Preference
提供自定义布局来实现更复杂的操作,并实现一些自定义数据绑定。但我认为上面应该做你想做的事。
答案 1 :(得分:2)
<强>的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);
}