|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера RMCreative.ru - Блог/Записи в блоге |
|
RMCreative.ru - Блог
Голосов: 1 Адрес блога: http://rmcreative.ru/feed/ Добавлен: 2008-06-12 21:34:00 блограйдером ZaiSL |
|
РИФ Воронеж 2014 видео
2014-10-30 16:19:08 (читать в оригинале)Появилось видео с Воронежской конференции РИФ 2014. В том числе и с секции, в которой я рассказывал про Yii 2.0.
РИФ Воронеж 2014 видео
2014-10-30 15:19:08 (читать в оригинале)Появилось видео с Воронежской конференции РИФ 2014. В том числе и с секции, в которой я рассказывал про Yii 2.0.
Рекомендация HTML5
2014-10-29 15:00:38 (читать в оригинале)Наконец-то, рекомендация HTML5 официально закончена. На сайте W3C можно почитать официальный анонс.
- Полная спецификация
Рекомендация HTML5
2014-10-29 14:00:38 (читать в оригинале)Наконец-то, рекомендация HTML5 официально закончена. На сайте W3C можно почитать официальный анонс.
- Полная спецификация
Android: обрабатываем нажатие back в фрагментах
2014-10-28 16:20:12 (читать в оригинале)В Android-приложениях иногда требуется особым образом обработать нажатие кнопки back. Если у вас не используются фрагменты, всё просто. Перекрываем метод onBackPressed у Activity и делаем что нам нужно. Если же используются фрагменты и по нажатию back необходимо что-то поменять в фрагменте, обработку хочется сделать именно в нём.
Посмотрев ответы на эту тему на StackOverflow я был несколько удивлён. Предлагается либо ненадёжный способ через OnKeyListener, либо жёсткий хардкод. Попробуем сделать это более красиво и удобно.
Начнём с интерфейса для фрагментов. Готового в фреймворке нет, сделаем свой:
public interface OnBackPressedListener { public void onBackPressed(); }
Далее перекроем метод onBackPressed в нашем FragmentActivity:
public class MyActivity extends FragmentActivity { @Override public void onBackPressed() { FragmentManager fm = getSupportFragmentManager(); OnBackPressedListener backPressedListener = null; for (Fragment fragment: fm.getFragments()) { if (fragment instanceof OnBackPressedListener) { backPressedListener = (OnBackPressedListener) fragment; break; } } if (backPressedListener != null) { backPressedListener.onBackPressed(); } else { super.onBackPressed(); } } }
Вытаскиваем все фрагменты, которые у нас есть. Ищем первый попавшийся, который реализует наш интерфейс OnBackPressedListener. Тут можно было придумать что-то, чтобы работать с несколькими обработчиками, но чаще всего он один. Если есть фрагмент, который реализует OnBackPressedListener, вызываем его единственный метод. Если нет — обрабатываем back как обычно.
Ну и, наконец, сам фрагмент:
public class MyFragment extends Fragment implements OnBackPressedListener { @Override public void onBackPressed() { // полезный код } }
Плюс данного подхода в том, что можно, например, отнаследовать все наши activity от MyActivity и использовать OnBackPressedListener без каких-либо изменений в коде MyActivity.
|
| ||
|
+40 |
47 |
Фрагменты |
|
+30 |
57 |
тот_самый_Петрович |
|
+19 |
40 |
история интерьера |
|
+1 |
27 |
Новости сайта RocketsMusic.ru |
|
+1 |
17 |
промо радио |
|
| ||
|
-17 |
20 |
Радио ФМ Онлайн слушать бесплатно |
|
-24 |
2 |
Лучинин.net |
|
|
|
|
|
|
|
|
|
|
|
|
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.

