2011-12-28 73 views
0

如何在运行时更改CheckBoxPreference的视图?如何以编程方式修改CheckBoxPreference视图

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

如果它是一个正常的观点,我可以这样做:

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

但CheckBoxPreference没有ID,所以我不知道怎么去“处理”给它。

回答

5

我有一个答案,以我自己的问题设置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);  
    } 

这是测试和工程。

+0

如果您使用PreferenceFragment,该怎么办?你如何看待观点? – tim687 2015-03-14 14:06:28

+0

你在哪里注销听众? – 2017-02-02 12:06:07

-2

你可以像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); 
+0

感谢苏尼尔,但我想你可能搞错了。 “android:id”不是CheckBoxPreference允许的xml属性,所以不能识别。 – aez 2011-12-28 13:32:53

+0

好吧,我已确认CheckBoxPreference没有“android:id”属性,因此无法使用此答案。 – aez 2011-12-31 14:08:53

1

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

android:summaryOff 
android:summaryOn 
相关问题