Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
windwdm
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 16:28     Preferences работает не корректно #1
изучаю андроид по учебнику Рето Майера. Дошел до темы создания меню настроек. делаю все по примеру но почему то программа работает не корректно. настройки применяются только после перезагрузки эмулятора. дебагинг показал что при выборе какого нибудь параметра выдается тот же результат что и при нажатии на кнопку отмены.

вот файл настроек
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();
            }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.07.2012, 17:44     Preferences работает не корректно #2
Опишите подробней что у Вас не получается и зачем Вам onActivityResult при работе с преференсами.
windwdm
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 17:56  [ТС]     Preferences работает не корректно #3
Цитата Сообщение от V0v1k Посмотреть сообщение
Опишите подробней что у Вас не получается и зачем Вам onActivityResult при работе с преференсами.
нужно чтобы при выборе, например минимальную магнитуду в 2 единицы чтобы после этого сразу вызывался метод updateFromPreferences();

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

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

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

Добавлено через 2 минуты
Листинг 6.4. смотрите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2012, 18:39     Preferences работает не корректно
Еще ссылки по теме:

Как получить preferences из broadcast reciver? Android
Android Где найти Preferences в Android Studio 1.2.2
Android Нужно сохранить 2000 бит посредством Preferences
Android Preferences
Preferences Android

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

Или воспользуйтесь поиском по форуму:
windwdm
0 / 0 / 0
Регистрация: 05.07.2012
Сообщений: 5
05.07.2012, 18:39  [ТС]     Preferences работает не корректно #9
переделал по листингу. все работает. а в примере этот код упущен(

Добавлено через 25 секунд
Большое спасибо за помощь. надо быть повнимательнее при чтении теории
Yandex
Объявления
05.07.2012, 18:39     Preferences работает не корректно
Ответ Создать тему
Опции темы

Текущее время: 07:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru