Урок 33. Хранение данных. Preferences.

Обсуждение уроков
Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 04 окт 2012, 10:50

конечно не будет работать ведь здесь же someBtn = (Button) findViewById(i); не id кнопки хранится а просто int значение.
Как сделать динамический лейаут - урок 16 более менее проливает свет.
R.id.team
Политика на форуме запрещена

Ivan
Сообщения: 3
Зарегистрирован: 29 сен 2012, 00:11

Re: Урок 33. Хранение данных. Preferences.

Сообщение Ivan » 04 окт 2012, 10:53

rezak90 писал(а):конечно не будет работать ведь здесь же someBtn = (Button) findViewById(i); не id кнопки хранится а просто int значение.
это я понял когда оно не завелось.
rezak90 писал(а): Как сделать динамический лейаут - урок 16 более менее проливает свет.
сенкс, но это мы умеем делать. Вопрос в сохранении добавленых плюшек на layout...

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 04 окт 2012, 11:04

Вопрос в сохранении добавленых плюшек на layout...
Создали плюшку - записали её данные в Preferences, потом при каждой загрузки активити проверять Preferences на наличие каких либо плюшек, если нашлась плюшка то повторяем процедуру добавления.
R.id.team
Политика на форуме запрещена

vortex
Сообщения: 43
Зарегистрирован: 15 окт 2012, 11:07

Re: Урок 33. Хранение данных. Preferences.

Сообщение vortex » 02 ноя 2012, 16:42

Не могу понять одну вещь.

Для этого в Eclipse откройте меню Window > Show View > Other и выберите Android > File Explorer. Отобразилась файловая система эмулятора

У меня закладка отобразилась, а вот внутри пустота :( Что я делаю не так?

Изображение

Эмулятор с приложением запущен.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 33. Хранение данных. Preferences.

Сообщение AndreyI » 02 ноя 2012, 23:13

Перейдите лучше в перспективу DDMS, там слева будет список подключенных устроиств и эмуляторов, если там ничего нет, то естественно ничего и в File Explorer не будет.
В перспективе DDMS тоже есть уже открытая вкладка File Explorer в правом окне, если подключено несколько устройств или эмуляторов, то удобно перемещаться м/у ними просто кликнув в окне Deviсes на нужный, а File Explorer покажет файловую систему выбранного устройства или эмулятора.

vortex
Сообщения: 43
Зарегистрирован: 15 окт 2012, 11:07

Re: Урок 33. Хранение данных. Preferences.

Сообщение vortex » 06 ноя 2012, 08:53

AndreyI:
А можете по подробнее? Что такое перспектива DDMS? Где её запустить и куда тыкать?

vortex
Сообщения: 43
Зарегистрирован: 15 окт 2012, 11:07

Re: Урок 33. Хранение данных. Preferences.

Сообщение vortex » 06 ноя 2012, 09:16

Отбой, как-то само разрулилось :)

ZipovUA
Сообщения: 15
Зарегистрирован: 07 май 2012, 11:17

Re: Урок 33. Хранение данных. Preferences.

Сообщение ZipovUA » 07 ноя 2012, 21:54

Доброго вам времени суток.

Попробывал поэксперементировать с Preferences. И как ни странно, не вышло.

Почему-то значения вроде бы и сохраняются коректно, но не подгружаются.
Перелапатил код, но причину ошибки понять так и не смог.

Суть Activity: список номеров телефонов:
На форме присутствуют поле ввода телефона, кнопка добавления телефона в список, список для отображения.
на события OnPause, OnStart, OnResume повешены соответственные действия по загрузке / выгрузке данных.

Поэтому, прошу помочь разобратся с данной проблемой.
По этой ссылке можно найти архив с проэктом
http://zaporozhci.narod.ru/Proba_AddPho ... Window.zip

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 07 ноя 2012, 23:28

если кому интересно то могу выложить класс для работы с preferences, и не нужно будет писать всяких load и save и т.д. методов, всё станит проще и банальней =)
R.id.team
Политика на форуме запрещена

Wa1deMar
Сообщения: 14
Зарегистрирован: 01 авг 2012, 11:19

Re: Урок 33. Хранение данных. Preferences.

Сообщение Wa1deMar » 07 ноя 2012, 23:45

Как можно сделать динамический Preferences?

например в базе находится список книг, который меняется (грузится с сервера и заносится в базу).. как вывести этот список в Preferences чтобы при выборе книги она выводилась в главном активити?

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

Re: Урок 33. Хранение данных. Preferences.

Сообщение damager82 » 09 ноя 2012, 10:30

Wa1deMar писал(а):Как можно сделать динамический Preferences?
Т.е. как заполнить список в preference?
В PreferenceActivity после метода addPreferencesFromResource ищите нужный вам список методом findPreference, приводите полученный объект к классу ListPreference и там уже методы setEntries и setEntryValues
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

$01ny$hko
Сообщения: 44
Зарегистрирован: 18 окт 2012, 10:11

Re: Урок 33. Хранение данных. Preferences.

Сообщение $01ny$hko » 09 ноя 2012, 11:59

Не сохраняется текст (((. Вот полный код:
Button btnSave;
EditText etText;
EditText etNumber;

SharedPreferences sPref;

final String SAVED_TEXT = "saved_text";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.profil);

etText = (EditText) findViewById(R.id.etText);
etNumber = (EditText) findViewById(R.id.etNumber);


btnSave = (Button) findViewById(R.id.btnSave);
btnSave.setOnClickListener((OnClickListener) this);

}

public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSave:
saveText();
break;
default:
break;

}
}

void saveText() {
sPref = getPreferences(MODE_PRIVATE);
Editor ed = sPref.edit();
ed.putString(SAVED_TEXT, etText.getText().toString());
ed.commit();
Toast.makeText(this, "Text saved", Toast.LENGTH_SHORT).show();

}

@Override
protected void onDestroy() {
saveText();
super.onDestroy();
}
Подскажите где ошибка?

Ivan99
Сообщения: 3
Зарегистрирован: 11 ноя 2012, 13:31

Re: Урок 33. Хранение данных. Preferences.

Сообщение Ivan99 » 11 ноя 2012, 13:54

Здравствуйте!

Вопрос по уроку следующий
С помощью этого кода:

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

sPref = getSharedPreferences("MyPref", MODE_PRIVATE);
Можно изменить имя выходного файла, куда будет "скидываться" сохранение. И получается что этот файл будет в папке с программой

А можно ли сделать так, чтобы этот файлик создавался вне папки с программой? (например на SDкарте, или сразу в каталоге /data), и как?


В еще вопрос совсем не по уроку, можно ли (и соотвественно как) сделать так, чтобы приложение устанавливалось не по стандартному пути (data/data/prog_name), а, например на SD карту (/sdcard/prog_name).
Просто в чем проблема - устанавливаю программу на реальное устройство, захожу в папку "data" с помощью любого файлового менеджера, а там пусто. Долго промучившись с проблемой выяснил что без root прав содержимое этой папки (ну и всего корневого каталога) отображаться не будет, соотвественно лично зайти и убедиться что какой-либо файлик создан не могу (что печалит).
А чтобы получить root права, надо прошивать телефон, что печалит втройне (есть риск его прошить как-нибудь некорректно и превратить аппарат в кирпич).

Или по крайней мере укажите пожалуйста место, куда "копать" (только желательно поточнее чем гугл, он на мои запросы описывает правила установки приложения с play market'а)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 11 ноя 2012, 14:22

Ivan99 писал(а):А можно ли сделать так, чтобы этот файлик создавался вне папки с программой? (например на SDкарте, или сразу в каталоге /data), и как?
можно вот таким велосипедом http://stackoverflow.com/questions/1086 ... to-sd-card
Ivan99 писал(а):можно ли (и соотвественно как) сделать так, чтобы приложение устанавливалось не по стандартному пути (data/data/prog_name), а, например на SD карту (/sdcard/prog_name).
На сколько мне известно то программно никак (после установки приложения можно, а перед установкой нет). Просто политика гугла не позволяет, это не есть хорошо, это не корректно. Ведь на западе к сд носителям относятся не очень хорошо и в основном делают телефоны со встроенной памятью, это в китае привыкли делать встроенную память. Та и не логично так делать, вытащил карту и считай что приложение упало.
R.id.team
Политика на форуме запрещена

Ivan99
Сообщения: 3
Зарегистрирован: 11 ноя 2012, 13:31

Re: Урок 33. Хранение данных. Preferences.

Сообщение Ivan99 » 11 ноя 2012, 15:33

rezak90 писал(а): На сколько мне известно то программно никак
Извиняюсь за оффтоп, но еще такой вопрос
А можно каким-нибудь альтернативным путем получить доступ к содержимому папки с приложением (/data/data/app_name), без root'а ?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 11 ноя 2012, 16:56

думаю что file explorer тот что в eclips'e сможет зайти куда угодно, по крайней мере у меня ещё не было проблем с правами рута.
R.id.team
Политика на форуме запрещена

Ivan99
Сообщения: 3
Зарегистрирован: 11 ноя 2012, 13:31

Re: Урок 33. Хранение данных. Preferences.

Сообщение Ivan99 » 11 ноя 2012, 19:51

rezak90 писал(а):думаю что file explorer тот что в eclips'e сможет зайти куда угодно, по крайней мере у меня ещё не было проблем с правами рута.
Не может((
(*простите, не получается картинку картинкой прикрепить, потому просто ссылка)
http://s1.ipicture.ru/uploads/20121111/tnniT700.jpg

Однако факт, что отображаются именно данные с телефона (через этот обозреватель зашел на SDкарту и увидел файлики, которые действительно существуют).

Такое уточнение - а вы в eclips'e случайно никакой галочки нигде не ставили (вроде как "Отображать в обозревателе все так, будто доступны права суперпользователя")?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение rezak90 » 11 ноя 2012, 21:13

нет никаких галочек не ставил, тогда вариант с adb должен помочь
http://stackoverflow.com/questions/6814 ... -ddms-view
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 33. Хранение данных. Preferences.

Сообщение AndreyI » 11 ноя 2012, 22:36

Без рута на устройстве ничего не получится

djdance
Сообщения: 48
Зарегистрирован: 04 дек 2012, 15:33

Re: Урок 33. Хранение данных. Preferences.

Сообщение djdance » 09 дек 2012, 14:53

Проблема! Один сервис не видит настройку, установленную в другом (в одном приложении).
В первом сервисе делаю:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor ed = prefs.edit();
ed.putString("tmp1", tmp1);
ed.commit();
Log.d(TAG, "проверка: "+prefs.getString("tmp1",""));


во втором

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
...
new Thread(new Runnable() { public void run() { while (true) {
String q=prefs.getString("tmp1","");
}}}

в итоге q всегда пустая, пока не перезапущу всё с нуля.
"проверка" высвечивает успешно.
почему так? поток виноват?

UPDATE действительно поток. объявлять надо внутри потока. Почему никто не сказал! :D

Ответить