С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
cyt_
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 5
#1

Шаблон Preferences Framework для различных объектов - Программирование Android

15.09.2013, 11:34. Просмотров 1117. Ответов 6
Метки нет (Все метки)

Всем привет.
Есть десять кнопок.
При нажатии на каждую из них должно открываться свое меню настроек (надпись, размер и так далее).
Шаблон меню создал res/xml/prefs.xml (с помощью Preferences Framework).
Проблема в том, что для всех кнопок открывается одно и то же меню.
Например, для первой кнопки вводишь надпись "Кнопка 1", и эта надпись оказывается в параметрах у всех кнопок.

prefs.xml
Java
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android" >        
    <PreferenceCategory 
        android:title="@string/title">      
        <EditTextPreference 
                    android:key="key"
            android:title="title"
            android:summary="summary" />        
            ...
</PreferenceScreen>
Класс меню:
Java
1
2
3
4
5
6
7
8
9
10
public class ButtonPrefs extends PreferenceActivity
{   
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
    }
        
}
При клике на кнопку:
Java
1
2
Intent i = new Intent(getApplicationContext(), ButtonPrefs.class);
startActivity(i);
Можно ли все-таки использовать один шаблон, созданный через Preferences Framework, для настроек различных объектов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 11:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблон Preferences Framework для различных объектов (Программирование Android):

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

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

Свои компоненты в Preferences для выбора времени, даты, числа, цвета - Программирование Android
Гуру, посоветуйте... начал гуглить и везде только &quot;полуфабрикаты&quot;... Надо сделать настройки максимально сложные и максимально...

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

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

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

6
Netscape
374 / 361 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
16.09.2013, 15:32 #2
Можно.

Для начала нужно передать в ButtonPrefs какой-нибудь идентификатор текущей кнопки, например номер.
Получив в методе onCreate этот идентификатор (id) использовать не дефолтный файл для сохранения настроек.

Java
1
2
3
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("btn_preferences_" + id);
prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);
Получится для каждой кнопки свой файл с настройками с одним шаблоном.
0
cyt_
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 5
16.09.2013, 16:53  [ТС] #3
Цитата Сообщение от Netscape Посмотреть сообщение
Можно.

Для начала нужно передать в ButtonPrefs какой-нибудь идентификатор текущей кнопки, например номер.
Получив в методе onCreate этот идентификатор (id) использовать не дефолтный файл для сохранения настроек.

Java
1
2
3
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("btn_preferences_" + id);
prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);
Получится для каждой кнопки свой файл с настройками с одним шаблоном.
А каким способом можно идентификатор передать, если intent формируется как:
Java
1
Intent i = new Intent(getApplicationContext(), ButtonPrefs.class);
?
0
Netscape
374 / 361 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
16.09.2013, 17:02 #4
Java
1
2
Intent i = new Intent(getApplicationContext(), ButtonPrefs.class);
i.putExtra("btn_id", id); // id - номер кнопки
в ButtonPrefs в методе onCreate
Java
1
int id = getIntent().getIntExtra("btn_id", -1);
0
cyt_
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 5
16.09.2013, 20:50  [ТС] #5
Цитата Сообщение от Netscape Посмотреть сообщение
Java
1
2
Intent i = new Intent(getApplicationContext(), ButtonPrefs.class);
i.putExtra("btn_id", id); // id - номер кнопки
в ButtonPrefs в методе onCreate
Java
1
int id = getIntent().getIntExtra("btn_id", -1);
Ах, точно! Забыл совсем про extras!
Спасибо, попробую!

Добавлено через 3 часа 44 минуты
Возник попутный вопрос. Как прочитать значения из файла настроек?
Java
1
2
3
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("btn_preferences_" + id);
prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);
0
Netscape
374 / 361 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
17.09.2013, 02:28 #6
Java
1
2
3
public static final String PREF_FILE_NAME = "btn_preferences_1";
SharedPreferences preferences = context.getSharedPreferences(PREF_FILE_NAME, MODE_WORLD_READABLE);
boolean b = prefs.getBoolean("key", true);
1
cyt_
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 5
18.09.2013, 22:36  [ТС] #7
Я не совсем про это.
Вот, например, у меня в файле настоек есть такой код (prefs.xml):
XML
1
2
3
4
5
...
<Preference 
android:key="@string/button_name"
android:layout="@layout/button" />  
...
Как мне найти этот элемент в классе ButtonPrefs?
Java
1
button = (Button) findViewById(R.id.button);
возвращает null

layout/button.xml выглядит так:
XML
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<Button 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</Button>
0
18.09.2013, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2013, 22:36
Привет! Вот еще темы с ответами:

Чтение preferences в BroadcastReceiver - Программирование Android
Доброго времени суток. Сам смысл того что я делаю: есть активити, которая отображает состояние батареи, есть активити настроек и есть...

Ошибка в Preferences в Android 4.4 - Программирование Android
Здравствуйте! Не могу понять суть ошибки, на всех версиях Android 2.2+ программа выполнялась корректно, до выхода Kit kat... У меня в...

Preferences работает не корректно - Программирование Android
изучаю андроид по учебнику Рето Майера. Дошел до темы создания меню настроек. делаю все по примеру но почему то программа работает не...

Как получить preferences из broadcast reciver? - Программирование Android
Здравствуйте! Активити сохраняет данные в SharedPreferences. Данные нужно получить из класса, наследующего BroadcastReceiver....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.