2011-12-28 76 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 
相關問題