如何在运行时更改CheckBoxPreference的视图?如何以编程方式修改CheckBoxPreference视图
具体而言,我想根据用户是否选中该框来更改CheckBoxPreference摘要。
如果它是一个正常的观点,我可以这样做:
view1 = (TextView)findViewById(R.id.idView1);
view1.setText("some text");
但CheckBoxPreference没有ID,所以我不知道怎么去“处理”给它。
如何在运行时更改CheckBoxPreference的视图?如何以编程方式修改CheckBoxPreference视图
具体而言,我想根据用户是否选中该框来更改CheckBoxPreference摘要。
如果它是一个正常的观点,我可以这样做:
view1 = (TextView)findViewById(R.id.idView1);
view1.setText("some text");
但CheckBoxPreference没有ID,所以我不知道怎么去“处理”给它。
我有一个答案,以我自己的问题设置ID来CheckBoxPreference。关键是在PreferenceActivity
使用findPreference
,如下:
public class MyPreferenceActivity extends PreferenceActivity{
private SharedPreferences preferences;
private SharedPreferences.OnSharedPreferenceChangeListener prefListener;
private CheckBoxPreference pref;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
pref = (CheckBoxPreference) findPreference(res.getString(R.string.keyAccount));
pref.setSummary("something");
//-- preference change listener
prefListener = new SharedPreferences.OnSharedPreferenceChangeListener(){
public void onSharedPreferenceChanged(SharedPreferences prefs, String key){
if (key.equals(somekey)){
pref.setSummary("something new");
}
}
};
preferences.registerOnSharedPreferenceChangeListener(prefListener);
}
这是测试和工程。
你可以像XML代码使用android:id
下面
<CheckBoxPreference
android:key="pref_boot_startup"
android:title="Auto start"
android:defaultValue="true"
android:id="@+id/my_CheckBoxPref"
/>
若要检索您可以使用
CheckBoxPreference check = (CheckBoxPreference)findViewById(R.id.my_CheckBoxPref);
您应该使用(在XML布局文件):
android:summaryOff
android:summaryOn
如果您使用PreferenceFragment,该怎么办?你如何看待观点? – tim687 2015-03-14 14:06:28
你在哪里注销听众? – 2017-02-02 12:06:07