как программно изменить представление CheckBoxPreference - PullRequest
0 голосов
/ 28 декабря 2011

Как я могу изменить представление CheckBoxPreference во время выполнения?

В частности, я хотел бы изменить сводку CheckBoxPreference в зависимости от того, установил ли пользователь флажок или нет.

Если бы это был обычный вид, я мог бы сделать что-то вроде:

view1 = (TextView)findViewById(R.id.idView1);
view1.setText("some text");

Но CheckBoxPreference не имеет идентификатора, поэтому я не знаю, как получить «дескриптор» к нему.

Ответы [ 3 ]

6 голосов
/ 29 декабря 2011

У меня есть ответ на свой вопрос.Ключ должен использовать findPreference в PreferenceActivity следующим образом:

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);     
    }

Это проверено и работает.

1 голос
/ 20 июня 2012

Вы должны использовать (в файле макета XML):

android:summaryOff
android:summaryOn
0 голосов
/ 28 декабря 2011

Вы можете установить id для CheckBoxPreference, используя android:id в xml-подобном коде ниже

<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);
...