2016-01-14 24 views
0

我正在玩別人爲我的應用製作的設置,並且我想在用戶無法正確連接到開發服務器時取消選中CheckPreferenceBox。 我打電話給我的CheckPreferenceBox這樣:不兼容類型:無法將視圖投射到CheckPreferenceBox

CheckBoxPreference mCheck = (CheckBoxPreference) findViewById(R.id.prefs_dev_mode); 
mCheck.setChecked(false); 

,這裏是我的.xml文件的部分涉及到它:

<CheckBoxPreference 
     android:id="@+id/prefs_dev_mode" 
     android:key="SP_DEV_SERVER" 
     android:title="@string/prefs_server_title" 
     android:summary="@string/prefs_server_summary" 
     android:defaultValue="false"/> 

你看到可能是什麼錯誤? 謝謝

回答

1

你面對的問題是,CheckBoxPreference實際上不是一個視圖。這是一個Preference。因此findViewById函數不適合你。

您不能像View一樣與此元素交互。

如果你想設置選擇它,你應該這樣這樣的事情:

CheckBoxPreference pref = (CheckBoxPreference) getPreferenceScreen().findPreference("SP_DEV_SERVER"); 
pref.setChecked(false); 
+0

你會怎麼做,而不使用過時的方法呢? – dequec64

+0

'PrePreferenceScreen()'不適用於'PreferenceFragment'。通常推薦在PreferenceActivity中使用PreferenceFragment,而不是僅僅使用PreferenceActivity。 – Knossos

+0

問題來了,我從這個傢伙那裏拿到的課程擴展了PreferenceActivity ... – dequec64