2012-11-19 101 views
0

我有一個PreferenceScreen,用戶可以選中/取消選中一個複選框。Mono For Android,FindViewById CheckBoxPreference?

要訪問的活動的任何控制我總是習慣:

var button = FindViewById<Button>(Resource.Id.myButton); 

現在好了,我要訪問我的CheckBoxPreference .. ,但其沒有工作,我得到這個異常:

類型'Android.Preferences.CheckBoxPreference'不能用作泛型類型或方法'Android.App.Activity.FindViewById(int)'中的類型參數'T'。沒有從'Android.Preferences.CheckBoxPreference'到'Android.Views.View'的隱式引用轉換。

如何我PreferenceScreen.xml樣子:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory 
    android:title="Basic" 
    android:id="@+id/preferenceCategory"> 
    <CheckBoxPreference 
     android:id="@+id/preferenceCheckBox" 
     android:key="usetestdata" 
     android:title="Testdata ON/OFF" 
     android:defaultValue="true" /> 
    </PreferenceCategory> 
</PreferenceScreen> 

和不工作代碼:

var aCheckBox = FindViewById<CheckBoxPreference>(Resource.Id.preferenceCheckBox); 
aCheckBox.Enabled = false; 

也許有人可以幫助我,告訴我如何從一個活動中訪問控制PreferenceScreen?

回答

1

下面是使用PreferenceActivity

代碼
public class SettingsActivity extends PreferenceActivity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //add the prefernces.xml layout 
     addPreferencesFromResource(R.xml.preferences); 

    final CheckBoxPreference cf = (CheckBoxPreference) findPreference("checkbox")); 
    cf.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 
         // do something here 
         return false; 
     } 
    }); 
} 

您的preferences.xml在XML文件夾

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <CheckBoxPreference android:key="checkbox" 
     android:title="Title"/> 
</PreferenceScreen> 
+0

感謝,這工作,我可以訪問我的CheckBoxPreference ..你也知道,我怎麼現在可以將CheckBoxPreference設置爲IsEnabled = false?沒有屬性啓用,就像普通的CheckBox有..任何想法? – eMi

+0

使用這種方法你可以設置值cf.setValue(true); – Pratik

+0

我並不是說Checked/Unchecked ..我現在解決了這個問題,我的意思是:cf.Enabled = false; – eMi