Урок 71. Preferences как настройки приложения. PreferenceActivity

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 71. Preferences как настройки приложения. PreferenceActivity

Сообщение damager82 » 19 апр 2012, 00:00

В этом уроке:
- используем Preferences для работы с настройками приложения


Click here to read this article!
Последний раз редактировалось damager82 19 май 2017, 10:15, всего редактировалось 5 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Prospekt
Сообщения: 41
Зарегистрирован: 30 май 2012, 23:06

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение Prospekt » 31 май 2012, 08:51

sp = PreferenceManager.getDefaultSharedPreferences(this);
А если в одном приложении может быть несколько активити-настроек, как к ним получить доступ?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение damager82 » 31 май 2012, 16:59

Prospekt писал(а):
sp = PreferenceManager.getDefaultSharedPreferences(this);
А если в одном приложении может быть несколько активити-настроек, как к ним получить доступ?
mi.setIntent(new Intent(this, PrefActivity.class));
Здесь указываете другой Activity-класс

Или не в этом вопрос?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Prospekt
Сообщения: 41
Зарегистрирован: 30 май 2012, 23:06

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение Prospekt » 31 май 2012, 17:16

Наверное всетаки не в этом. Как вызвать Активити с настройками, я понял. А вот как получить значение установок я не понял. Предположим у нас есть 2 разных активити с настройками PreAct1 и PreAct2. Метод PreferenceManager.getDefaultSharedPreferences(this); возвращает (как я понимаю) настройки (значения) либо первой активити либо второй. Например в первой есть текстовые поля "name" и "login", а во второй тектовые поля "id" и "name". Если сделать так:

sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("name", "");

Что будет находиться в переменной (объекте) name? Значение name PreAct1 или значение name PreAct2.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение damager82 » 31 май 2012, 17:26

Prospekt писал(а):Что будет находиться в переменной (объекте) name? Значение name PreAct1 или значение name PreAct2.
Я не проверял, но думаю, что если PreAct1 и PreAct2 оба содержат поле name, то они оба и будут работать с параметром name из PreferenceManager.getDefaultSharedPreferences.

Т.е. на экране PreAct1 написали в name значение value. Открываем PreAct2 и видим это же значение. Т.е. поля два, а значение одно.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

romanzi
Сообщения: 8
Зарегистрирован: 31 май 2012, 21:55

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение romanzi » 31 май 2012, 22:03

Уже несколько дней бьюсь с проблемой:
Есть 2 активности. 1 активность должна читать ключи, другая читать и записывать их.
Первая активность не загружает информацию из ключа "number",а вторая (где он и создавался) - наоборот выгружает и всё ок.

Код: Выделить всё

SharedPreferences save;
save = getPreferences(MODE_WORLD_WRITEABLE); 
Editor ed = save.edit();
key = save.getInt("number", 0);
В двух активностях этот код и даже переменные одинаковы.

Я уже устал решать это(

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение KamiSempai » 01 июн 2012, 07:42

Вот тема где я про это уже писал: Настройки приложения
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

romanzi
Сообщения: 8
Зарегистрирован: 31 май 2012, 21:55

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение romanzi » 01 июн 2012, 08:41

Спасибо,мужик!!
Получилось!!
Спс большое!!!
Обожаю Ваш сайт. Ща кину денег Вам :)

romanzi
Сообщения: 8
Зарегистрирован: 31 май 2012, 21:55

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение romanzi » 03 июн 2012, 20:25

Как удалить данные из ключа?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение KamiSempai » 04 июн 2012, 07:10

romanzi писал(а):Как удалить данные из ключа?
Что бы понять как это сделать, достаточно посмотреть на список методов SharedPreferences.Editor.

Учитесь находить нужную Вам информацию, в программировании это очень полезный навык.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение Mikhail_dev » 29 июн 2012, 09:56

Здравствуйте. Такой вопрос. Зачем использовать метод addPreferencesFromResource , если он объявлен как

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение damager82 » 29 июн 2012, 15:49

no-- писал(а):Здравствуйте. Такой вопрос. Зачем использовать метод addPreferencesFromResource , если он объявлен как
Чето вы не договариваете ...
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение KamiSempai » 29 июн 2012, 17:00

damager82 писал(а):Чето вы не договариваете ...
Мхатовскую паузу выдерживает :)
Я, как главный телепат форума, предположу, что он имеет ввиду пометку "Deprecated".
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение Mikhail_dev » 11 июл 2012, 17:29

Извиняюсь. Торопился при написании и не заметил что курсор потерял при переводе на другой язык. Да, он объявлен как Deprecated. Вроде как сейчас советуют использовать другой подход. Названия не помню к сожалению.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение damager82 » 12 июл 2012, 09:37

no-- писал(а):Извиняюсь. Торопился при написании и не заметил что курсор потерял при переводе на другой язык. Да, он объявлен как Deprecated. Вроде как сейчас советуют использовать другой подход. Названия не помню к сожалению.
Есть такое. Это в Android 3 куча нового появилась. Позже все это буду рассказывать.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение neoksi » 30 авг 2012, 20:44

Честно, мозг сломал, пока понимал логику действия этой штуки =). Хотя она меня привлекла только тем, что автоматом строит из xml активити настроек. Сами настройки храню в SQLite, но для вывода и их редактирования хочу использовать Preferences.

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение brucemax » 27 окт 2012, 01:15

Вот я "молодец"!! Два месяц назад велосипед изобрёл. Надо мне были подобные настройки.. так я их через ListView лепил.. с кучами методов и всего остального.. А тут все готовое есть. Только у меня было много полей, где по по нажатию диалог открывался с одиночным выбором. А как этим способом такое реализовать не подскажите?

tolik777
Сообщения: 37
Зарегистрирован: 06 июл 2012, 14:25

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение tolik777 » 18 ноя 2012, 09:57

Добрый день.
У меня в настройках приложения используются XML данные. Использовал PreferenceFragment по вот этому примеру
Теперь возникла такая задача, чтобы в этих же настройках использовать одну переменную для внешнего устройства и необходимо сделать так, чтобы при установке данной переменной в настройках, вызывался обработчик, по которому включался Bluetooth и эта переменная отправлялась для записи во Flash память микроконтроллера.
Запись во Flash реализовал, отправку данных по Bluetooth также, а вот с PreferenceFragment что то не получается. Отдельное активити делать не хочется, подскажите как с помощью PreferenceFragment такое реализовать? Т.е. мне нужен сам код обработчика.
Вот мой код:

Код: Выделить всё

package com.example.test1;

import android.app.Activity;
import android.os.Bundle;

public class SetPreferenceActivity extends Activity {
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
  
	getFragmentManager().beginTransaction().replace(android.R.id.content,
                new PrefsFragment()).commit();
	}
}
Ключ переменной в XML: pref_pwmMax, EditTextPreference.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение damager82 » 19 ноя 2012, 17:32

tolik777 писал(а):Т.е. мне нужен сам код обработчика.
Ключ переменной в XML: pref_pwmMax, EditTextPreference.
Код onCreate в фрагменте:

Код: Выделить всё

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.pref);
		Preference pref = findPreference("pref_pwmMax");
		pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
			public boolean onPreferenceChange(Preference preference, Object newValue) {
				//TODO Ваш код
				return true;
			}
		});
	}
Это?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

tolik777
Сообщения: 37
Зарегистрирован: 06 июл 2012, 14:25

Re: Урок 71. Preferences как настройки приложения. Preferenc

Сообщение tolik777 » 20 ноя 2012, 10:50

Ага спасибо! Почти это... но подтолкнули в нужном направлении.

Ответить