0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
1

Preferences работает не корректно

05.07.2012, 16:28. Показов 1369. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
изучаю андроид по учебнику Рето Майера. Дошел до темы создания меню настроек. делаю все по примеру но почему то программа работает не корректно. настройки применяются только после перезагрузки эмулятора. дебагинг показал что при выборе какого нибудь параметра выдается тот же результат что и при нажатии на кнопку отмены.

вот файл настроек
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    <CheckBoxPreference
            android:key="PREF_AUTO_UPDATE"
            android:title="Auto refresh"
            android:summary="Select to turn on automatic updating"
            android:defaultValue="true"
            />
    <ListPreference
            android:key="PREF_UPDATE_FREQ"
            android:title="Refresh frequency"
            android:summary="Frequency at which to refresh earthquake list"
            android:entries="@array/update_freq_options"
            android:entryValues="@array/update_freq_values"
            android:dialogTitle="Refresh frequency"
            android:defaultValue="60"
            />
    <ListPreference
            android:key="PREF_MIN_MAG"
            android:title="Minimum magnitude"
            android:summary="Select the minimum magnitude earthquake to report"
            android:entries="@array/magnitude_options"
            android:entryValues="@array/magnitude"
            android:dialogTitle="Magnitude"
            android:defaultValue="3"
            />
</PreferenceScreen>
масив данных

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="update_freq_options">
        <item>Every Minute</item>
        <item>5 minutes</item>
        <item>10 minutes</item>
        <item>15 minutes</item>
        <item>Every Hour</item>
    </string-array>
 
    <string-array name="magnitude">
        <item>3</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
    </string-array>
 
    <string-array name="magnitude_options">
        <item>3</item>
        <item>5</item>
        <item>6</item>
        <item>7</item>
        <item>8</item>
    </string-array>
 
    <string-array name="update_freq_values">
        <item>1</item>
        <item>5</item>
в активити резалт всегда resultCode == Activity.RESULT_CANCELED

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        try {
        super.onActivityResult(requestCode, resultCode, data);
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        if (requestCode == SHOW_PREFERENCES)
            if (resultCode == Activity.RESULT_OK) {
                updateFromPreferences();
                refreshEarthquakes();
            } else if (resultCode == Activity.RESULT_CANCELED) {
                refreshEarthquakes();
            }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2012, 16:28
Ответы с готовыми решениями:

Не корректно работает AutoCompleteTextView
Доброго времени суток. Есть AutoCompleteTextView, на реальном (не эмуляторе) Андроиде 4.1 он...

Приложение в телефоне работает корректно только в эмуляторе
мобильное приложение .apk который я скинул на свой телефон захожу проверяю открывает когда нажимаю...

Preferences
Доброго всем дня. В android только начинаю разбираться. Пытаюсь сохранить настройки по уроку...

Preferences
Как проверить были ли хотя бы раз хранены данные с помощью Preferences

8
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.07.2012, 17:44 2
Опишите подробней что у Вас не получается и зачем Вам onActivityResult при работе с преференсами.
0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 17:56  [ТС] 3
Цитата Сообщение от V0v1k Посмотреть сообщение
Опишите подробней что у Вас не получается и зачем Вам onActivityResult при работе с преференсами.
нужно чтобы при выборе, например минимальную магнитуду в 2 единицы чтобы после этого сразу вызывался метод updateFromPreferences();

в учебнике написано что в методе onActivityResult отлавливается результат выбора настройки. и по идее если нажать на кнопку отмена resultCode == Activity.RESULT_CANCELED, а если выбрать какой нибудь параметр то resultCode == Activity.RESULT_OK.

Но почему-то у меня в любом случае результат первый
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.07.2012, 18:04 4
Что за учебник?
может Вы что-то неправильно поняли?
что бы получить Activity.RESULT_OK нужно его засетать (setResult(...)) в активити, которую вы вызвали методом startActivityForResult(...).
0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 18:11  [ТС] 5
Цитата Сообщение от V0v1k Посмотреть сообщение
Что за учебник?
может Вы что-то неправильно поняли?
что бы получить Activity.RESULT_OK нужно его засетать (setResult(...)) в активити, которую вы вызвали методом startActivityForResult(...).
Рето Майер - Android 2. Программирование приложений. Там сначала делали активность без использования фреймворка настроек (Preferences fraimwork), потом ее переделывали под фреймворк. поэтому трудно определить что там точно надо. но в примерах которые идут к книге тоже нет присваивания (они тоже не работают)
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.07.2012, 18:18 6
какая страница?

Добавлено через 2 минуты
вот из этой книги.

Java
1
2
3
4
5
6
7
8
Button okButton = (Button) findViewById(R.id.okButton);
okButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
savePreferences();
Preferences.this.setResult(RESULT_OK);
finish();
}
});
а у Вас так в коде?
есть okButton который делает setResult(RESULT_OK)? именно этим батоном Вы выходите с преференс активити?

Добавлено через 1 минуту
проверьте выполняется ли у Вас этот код.

Добавлено через 1 минуту
или я не тот пример смотрю?

Добавлено через 40 секунд
а, понял, нужно мне глянуть следующий раздел...
0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 18:19  [ТС] 7
Цитата Сообщение от V0v1k Посмотреть сообщение
какая страница?
на странице 255 создается без фреймворка.. там есть присваивание (стр 259 п.7), внутри обработчиков кнопок ок и кансел.

позже на странице 569 приложение переделывается под фреймворк где в пункте 3 просят убрать весь предыдущий код вместе с обработчиками. после чего присваивание нигде не описано
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.07.2012, 18:24 8
такс, посмотрел следующий раздел, там совсем не нужно использовать onActivityResult, там нужно юзать
Java
1
2
3
4
5
public void onSharedPreferenceChanged(SharedPreferences prefs, String
key) {
// TODO Проверять общие настройки, ключевые параметры и изменять UI
// или поведение приложения, если потребуется.
}
в него и впишите updateFromPreferences();

Добавлено через 2 минуты
Листинг 6.4. смотрите.
0
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 18:39  [ТС] 9
переделал по листингу. все работает. а в примере этот код упущен(

Добавлено через 25 секунд
Большое спасибо за помощь. надо быть повнимательнее при чтении теории
0
05.07.2012, 18:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2012, 18:39
Помогаю со студенческими работами здесь

О работе с Preferences
Друзья, возник чисто теоретический вопрос по работе с Preferences в Андроид студио: какая из...

Preferences из Applicaton
Нужно еще до открытия формы (в Application) получать и сохранять настройки. Пока работаю с...

Preferences Framework: ActionBar
Всем привет! Недавно начал изучать Android. При написании программы я пользовался Preferences...

Ошибка в Preferences Framework
Недавно начал изучать программирование под андроид и столкнулся с проблемой. Я создал xml с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru