如何以编程方式修改CheckBoxPreference视图

时间:2011-12-28 12:59:12

标签: android android-preferences

如何在运行时更改CheckBoxPreference的视图?

具体来说,我想根据用户是否选中此框来更改CheckBoxPreference摘要。

如果这是正常观点,我可以做类似的事情:

view1 = (TextView)findViewById(R.id.idView1);
view1.setText("some text");

但CheckBoxPreference没有id,所以我不知道如何获得它的“句柄”。

3 个答案:

答案 0 :(得分:6)

我对自己的问题有一个答案。关键是在findPreference中使用PreferenceActivity,如下所示:

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);     
    }

这是经过测试和运作的。

答案 1 :(得分:1)

您应该使用(在XML布局文件中):

android:summaryOff
android:summaryOn

答案 2 :(得分:-2)

您可以使用xml中的android:id将ID设置为CheckBoxPreference,如下面的代码

<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);