Как поймать нажмите на ListPreference как в настройках браузера Android - PullRequest
0 голосов
/ 02 марта 2011

Настройки браузера Android позволяют нажимать на ListPreference, если кто-то хочет очистить кеш.Если пользователи нажимают на эту ListPreference, список не отображается - вместо этого появляется диалоговое окно.

Я хотел бы использовать аналогичную функцию для остановки работающей службы.

Я создал запись внастройки приложения без андроида: записи и андроид: теги entryValues:

 <ListPreference
     android:key="list_stop"
     android:title="@string/txt_stopservice" />

Нет Я пытаюсь поймать щелчок:

 listPreferenceServiceStop = (ListPreference) preferenceScreen.findPreference("list_stop");
 listPreferenceServiceStop.setOnPreferenceClickListener(new OnPreferenceClickListener() {

    public boolean onPreferenceClick(Preference preference) {
        Tools.showToast(context, "BlaBla");
        return true;
    }

 });

Если пользователь нажимает на эту запись, появляется следующая ошибка:

java.lang.IllegalStateException: ListPreference требуется массив записей и массив entryValues.

В настройках браузера Android также не отображаются значения.

Как они это делают?И это правильный способ поймать клик?

Большое спасибо заранее.HJW

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Почему вы используете ListPreference? Вы должны использовать DialogPreference вместо.

0 голосов
/ 06 сентября 2011
    ListPreference myVar = (ListPreference) findPreference("key you define at xml");

    myVar.setOnPreferenceClickListener(new OnPreferenceClickListener() {

        public boolean onPreferenceClick(Preference preference) {

            Toast.makeText( getBaseContext(), "clicked", Toast.LENGTH_LONG ).show();

            return true;
        }

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...