|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блогов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.
|
| ||
|
+557 |
564 |
Виктор Имантович Алкснис |
|
+548 |
625 |
Все для людей |
|
+520 |
561 |
krodico |
|
+519 |
560 |
sich |
|
+500 |
511 |
Выводы простого человека |
|
| ||
|
-2 |
15 |
dandr |
|
-6 |
11 |
Записки океанолога |
|
-7 |
12 |
Internet business in Ukraine |
|
-8 |
10 |
Markup |
|
-9 |
73 |
Кукуц Шмукуц |
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.
