Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 окт 2018, 11:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 22 апр 2012, 23:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке:


- используем в настройках список
- группируем настройки по экранам и категориям




Click here to read this article!

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


Последний раз редактировалось damager82 19 май 2017, 10:15, всего редактировалось 4 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 авг 2012, 12:27 

Зарегистрирован: 20 июл 2012, 12:39
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго времени суток.
Когда я нажимаю на ListPreference на экран выходит список. Какие методы при этом вызываются? Я так понимаю что Activity в onPause не уходит. Мне интересен метод вызываемый при выборе элемента из списка.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 26 авг 2012, 17:54 

Зарегистрирован: 20 июл 2012, 12:39
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ладно. Тогда может кто подскажет как обработать выбор в ListPreference и нажатие кнопки в EditPreference?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 окт 2012, 10:49 

Зарегистрирован: 20 июл 2012, 12:39
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
нашел альтернативное решение. Использовал OnPreferenceChangeListener.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 ноя 2012, 21:07 

Зарегистрирован: 11 окт 2012, 23:30
Сообщений: 9
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Ребята, вы пробовали запускать это на андроид 2.2 ? Почему-то весь экран начинает толи путаться в теме оформления, толи еще в чем-то.. по умолчанию тема светлая android:Theme.Light, но в PrefActivity на странице Screen экран становится черным, а когда трогаешь экран пальцем, чекбоксы становятся светлыми.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 ноя 2012, 13:36 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
gera писал(а):
Ребята, вы пробовали запускать это на андроид 2.2 ? Почему-то весь экран начинает толи путаться в теме оформления, толи еще в чем-то.. по умолчанию тема светлая android:Theme.Light, но в PrefActivity на странице Screen экран становится черным, а когда трогаешь экран пальцем, чекбоксы становятся светлыми.

Очень может быть. У меня на Galaxy Tab 10.1 с Android 3.2 похожие баги наблюдались при запуске PreferenceFragment c PreferenceScreen-ами.

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 дек 2012, 20:41 
Аватар пользователя

Зарегистрирован: 14 окт 2012, 13:29
Сообщений: 31
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Тут пример со статическим списком, а как отображать динамический список? Чтоб также мог добавлять значения в массив. Например отображать последние файлы, которые были открыты программой.

_________________
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 дек 2012, 16:33 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
elron писал(а):
Тут пример со статическим списком, а как отображать динамический список? Чтоб также мог добавлять значения в массив. Например отображать последние файлы, которые были открыты программой.

Посмотрите здесь viewtopic.php?f=3&t=123&p=6421#p6421

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


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2013, 11:45 
Аватар пользователя

Зарегистрирован: 04 мар 2012, 07:41
Сообщений: 7
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
а как показать не нижний уровень настроек, а конкретный PreferenceScreen?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 янв 2013, 13:55 
Аватар пользователя

Зарегистрирован: 14 окт 2012, 13:29
Сообщений: 31
Благодарил (а): 1 раз.
Поблагодарили: 4 раз.
Vlady писал(а):
а как показать не нижний уровень настроек, а конкретный PreferenceScreen?

В xml-файле добавляете PreferenceScreen(по сути просто кнопка)
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. <PreferenceScreen
  2. android:key="key"
  3. android:title="title"
  4. android:summary="summary" >
  5. </PreferenceScreen>
Потом в коде добавляете метод:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
  2. Log.d("myLog", "onPreferenceTreeClick " + preference.getKey());
  3. if (preference.getKey().contains("key")){ } }
Создаёте новый Layout и указываете его в PreferenceScreen в поле Layout.

_________________
Часы триггер | Гденьги | Линии живые обои | Поддержите проекты


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 фев 2013, 18:40 
Аватар пользователя

Зарегистрирован: 03 фев 2013, 00:14
Сообщений: 47
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Интересную вещь заметил: если мы выбрали какую-то настройку через список, то при открытии списка (для обновления значения) выбранный ранее пункт будет выделен (я сначала полагал, что этот текущий установленный пункт определялся по соответствующему значению настройки в SharedPreferences). Но вот если удалить настройки (через edit().clear().commit()), то выделенный пункт не снимается, как ни крути, даже не помогает обновление списка значений через setEntries и setEntryValues (надеялся, что там есть какой-нибудь SelectedItem и его можно скинуть вручную).
То есть, чтобы скинуть этот пункт, остаётся только пересоздавать этот ListPreference?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 мар 2013, 20:24 

Зарегистрирован: 04 дек 2012, 15:33
Сообщений: 48
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
решено

Не могу понять, простой список не запоминает свое значение, точнее запоминает, но через раз.

(... - тут был код, но это неважно)

так вот, Log выводит пункты почти всегда не те что я отметил, а ранее отмеченные. Захожу в настройки вновь - там опять старое значение. На второй раз может и сработать. А может и не сработать. Последовательность не совпадает с тем, как я их выделяю. Что такое, в чем дело? :(

UPD чекбоксов это тоже касается.
UPD1 У меня параллельно в сервисе раз в секунду могут забираться настройки через
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
может быть, это мешает окну настроек брать и обновлять?
UPD final - да, сервису надо запрещать проверять настройки, пока открыто окно настроек. Кошмар. Пришлось запрещать ему бродкастом. Теперь все работает


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 мар 2013, 19:21 

Зарегистрирован: 16 мар 2013, 19:14
Сообщений: 1
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
У меня есть вопрос, как сменить фон основного экрана настроек?
Я нашел вариант с созданием своей темы оформления вот так:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <style name="PrefsTheme" parent="@android:style/Theme.Black.NoTitleBar">
  2.         <item name="android:windowBackground">@drawable/prefs_bg</item>
  3.         <item name="android:textColor">@color/prefs_bg</item>
  4.         <item name="android:listViewStyle">@style/listViewPrefs</item>
  5.     </style>
  6.  
  7.     <style name="listViewPrefs" parent="@android:style/Widget.ListView">
  8.         <item name="android:background">@drawable/prefs_bg</item>
  9.         <item name="android:cacheColorHint">@color/prefs_bg</item>
  10.         <item name="android:textColor">@color/text_color</item>
  11.     </style>


Но в таком случае картинка устанавливается как для основного экрана настроек, так и для диалога с радиобатонами от ListPreference.


UPD: Все, я разобрался, сам тупанул, накидал лишних тегов.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 мар 2014, 21:11 

Зарегистрирован: 06 мар 2014, 20:46
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Если кратко, то столкнулась с подобной проблемой, как у djdance. Только нет у меня сервиса, который ежесекундно "просит" настройки.. а проявления те же - с первого раза "кликания" по пункту списка настроек (listPreference) лог сообщает что всё ещё выбран прошлый пункт списка, и только после второго клика приложение наконец-то "понимает", какой пункт действительно был выбран..

Если немного подробней, то суть приложение в том, чтобы запустить слушателя статуса телефонных звонков (PhoneStateListener), так что активити я запускаю только для того чтобы юзер мог кликнуть в пункте меню и выбрать включить или же выключить слушателя. Для этого у меня есть ещё одно активити - "контейнер" для PreferenceFragment, в котором я отслеживаю изменения в listreference

Код: [ Загрузить ] [ Скрыть ]
  1. ListPreference listPreference = (ListPreference) findPreference("list"); 
  2.         listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
  3.  
  4.             public boolean onPreferenceChange(Preference preference, Object newValue) { 
  5.                 ListPreference listPref = (ListPreference) preference; 
  6.                 String userC = listPref.getValue(); 
  7.                 Log.d(LOG, "Settingfragment, onCreate, userChoice = " + userC); 
  8.  
  9.                 SharedPreferences settings = getActivity().getSharedPreferences("preferences", Context.MODE_PRIVATE); 
  10.                 SharedPreferences.Editor editor = settings.edit(); 
  11.                 editor.putString("list", userC); 
  12.                 editor.commit(); 
  13.  
  14.                 return true; 
  15.             } 
  16.         }); 


Не знаю, может ошибка в чём-то очень очевидном, но что-то серфинг по инету на этот раз не даёт ответа :? Подскажите пожалуйста в чём может причина такого поведения


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 мар 2014, 00:04 

Зарегистрирован: 06 мар 2014, 20:46
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я дочиталась в документации в чём была проблема - "Sets the callback to be invoked when this Preference is changed by the user (but before the internal state has been updated).", т.е. колбек "приходит" когда настройка изменяется НО ДО РЕАЛЬНОГО ИЗМЕНЕНИЯ В СИСТЕМЕ ;)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 30 сен 2015, 15:20 

Зарегистрирован: 28 сен 2015, 11:53
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Метод addPreferencesFromResource усталел и с Android Studio код MainActivity можно переписать так:
Код: [ Загрузить ] [ Скрыть ]
  1. package ua.com.webtuning.startandroid; 
  2.  
  3. import android.content.Intent; 
  4. import android.content.SharedPreferences; 
  5. import android.os.Bundle; 
  6. import android.preference.PreferenceManager; 
  7. import android.support.v7.app.AppCompatActivity; 
  8. import android.view.Menu; 
  9. import android.view.MenuItem; 
  10. import android.widget.TextView; 
  11.  
  12. public class MainActivity extends AppCompatActivity { 
  13.     TextView tvInfo; 
  14.     SharedPreferences sharedPreferences; 
  15.  
  16.     @Override 
  17.     protected void onCreate(Bundle savedInstanceState) { 
  18.         super.onCreate(savedInstanceState); 
  19.         setContentView(R.layout.activity_main); 
  20.  
  21.         tvInfo = (TextView) findViewById(R.id.tvInfo); 
  22.         sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
  23.     } 
  24.  
  25.     @Override 
  26.     public boolean onCreateOptionsMenu(Menu menu) { 
  27.         // Inflate the menu; this adds items to the action bar if it is present. 
  28.         getMenuInflater().inflate(R.menu.menu_main, menu); 
  29.  
  30.         return true; 
  31.     } 
  32.  
  33.     @Override 
  34.     protected void onResume() { 
  35.         String listValue = sharedPreferences.getString("list", "не выбрано"); 
  36.         tvInfo.setText("List value = " + listValue); 
  37.         super.onResume(); 
  38.     } 
  39.  
  40.     @Override 
  41.     public boolean onOptionsItemSelected(MenuItem item) { 
  42.         // Handle action bar item clicks here. The action bar will 
  43.         // automatically handle clicks on the Home/Up button, so long 
  44.         // as you specify a parent activity in AndroidManifest.xml. 
  45.         int id = item.getItemId(); 
  46.  
  47.         //noinspection SimplifiableIfStatement 
  48.         if (id == R.id.action_settings) { 
  49.             startActivity(new Intent(this, PrefActivity.class)); 
  50.             return true; 
  51.         } 
  52.  
  53.         return super.onOptionsItemSelected(item); 
  54.     } 

Используем пунк меню, который создает IDE по умолчанию и загружаем найстройки опять таки уже созданной функцией запукая Intent


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 мар 2016, 11:01 

Зарегистрирован: 10 мар 2016, 15:20
Сообщений: 5
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Сделал всё по уроку, при нажатии "Menu" - "Preferences" ничего не происходит, не появляется окно с настройками.
Пример с 71 урока выполнил, запустил, всё нормально работает. А этот почему-то не работает. Не перепечатывал, скопипастил.
Android Studio 1.5.1.
Может кто сталкивался?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 27 окт 2016, 11:11 

Зарегистрирован: 14 окт 2016, 10:54
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
AABL писал(а):
Сделал всё по уроку, при нажатии "Menu" - "Preferences" ничего не происходит, не появляется окно с настройками.
Пример с 71 урока выполнил, запустил, всё нормально работает. А этот почему-то не работает. Не перепечатывал, скопипастил.
Android Studio 1.5.1.
Может кто сталкивался?


Похожая ситуация. Что в этом, что в 71-м уроке. Сначала не было меню. Совсем. Белый экран с TextView. С помощью предыдущих уроков и гугла вроде получил что нужно. Но окно настроек тоже не вызывается. Android Studio 2.1.3. Api 24. Запускал на реальном устройстве с 6.0.1 на борту

up
Методом научного тыка удалось починить)
В манифесте строки android:theme="@style/AppTheme" и android:theme="@style/AppTheme.NoActionBar" удаляем. В xml устанавливаем тему DarkActionBar (проверил лично) или подобную.
Может кому будет полезен мой опыт)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 ноя 2016, 12:24 

Зарегистрирован: 24 окт 2016, 17:19
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Поясните, пожалуйста, почему такой код работает (сделал в одном проекте уроки 71 и 72).
Код: [ Загрузить ] [ Скрыть ]
  1. @Override 
  2.      public boolean onCreateOptionsMenu(Menu menu) { 
  3.          MenuItem menuItem = menu.add(0,1,0,"Preferences"); 
  4.          menuItem.setIntent(new Intent(this,PrefActivity.class)); 
  5.          menuItem = menu.add(0,2,1,"Preferences2"); 
  6.          menuItem.setIntent(new Intent(this, Pref2Activity.class)); 
  7.          return super.onCreateOptionsMenu(menu); 
  8.      } 

В данном случае создается меню с 2мя строчками и на каждую вешается свой интент.
И я не понимаю поему это работает.
Мне кажется, что раз метод setIntent применяется к одному объекту menuItem дважды, то по идее к обоим пунктам должен бы прицепиться интент, установленный в последней строчке.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 21 сен 2018, 21:59 

Зарегистрирован: 08 авг 2018, 07:26
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.
Уже третий день бьюсь с уроком. Дошло уже до того, что просто скопировал весь код в нужные файлы, скомпилировал и установил на устройство.
Кликаю по меню, появляется вкладка Preference, кликаю на вкладку и все, больше ничего не происходит. В чем может быть проблема?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB