2012-11-19 4 views
0

J'ai un PreferenceScreen, où l'utilisateur peut cocher/décocher une case.Mono pour Android, FindViewById Une CheckBoxPreference?

Pour obtenir un accès tout contrôle dans l'activité que je toujours utilisé:

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

Eh bien maintenant, je veux accéder à mon CheckBoxPreference .. , mais ce ne fonctionne pas et je reçois cette exception:

Le type "Android.Preferences.CheckBoxPreference" ne peut pas être utilisé comme paramètre de type "T" dans le type générique ou la méthode "Android.App.Activity.FindViewById (int)". Il n'y a pas de conversion de référence implicite de 'Android.Preferences.CheckBoxPreference' à 'Android.Views.View'.

Comment mon PreferenceScreen.xml ressemble:

<?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> 

et le code qui ne travaillent pas:

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

Peut-être que quelqu'un peut me aider et me dire sur la façon d'accéder aux commandes d'une activité de un écran de préférences?

Répondre

1

Voici le code pour l'utilisation 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; 
     } 
    }); 
} 

votre preferences.xml dans le dossier 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

grâce, qui a travaillé, je pouvais accéder à mon CheckBoxPreference .. Est-ce que vous savez aussi, comment je pourrait maintenant définir CheckBoxPreference à IsEnabled = false? Il n'y a pas de propriété activée, comme le CheckBox normal a .. des idées? – eMi

+0

en utilisant cette méthode, vous pouvez définir la valeur cf.setValue (true); – Pratik

+0

Je ne voulais pas dire Checked/Unchecked. J'ai tout de même résolu le problème, je voulais dire ceci: cf.Enabled = false; – eMi