如何在運行時更改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