2012-11-19 5 views
0

У меня есть PreferenceScreen, где пользователь может установить/снять флажок.Моно для Android, FindViewById CheckBoxPreference?

Чтобы получить доступ к любому управлению в деятельности я всегда использовал:

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

Ну теперь, я хочу, чтобы получить доступ к моим CheckBoxPreference .. , но он не работает, и я получаю это исключение:

Тип «Android.Preferences.CheckBoxPreference» не может использоваться как параметр типа «T» в универсальном типе или методе «Android.App.Activity.FindViewById (int)». Нет никакого неявного преобразования ссылок из «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; 

Может быть кто-то может мне помочь и рассказать мне о том, как получить доступ контроля в деятельности от экран предпочтения?

ответ

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

Я не имею в виду Проверено/Не отмечено. Я все-таки исправил проблему, я имел в виду это: cf.Enabled = false; – eMi