Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
#1

Toolbar как отслеживать кнопку "стрелка назад" - Программирование Android

09.11.2016, 13:01. Просмотров 781. Ответов 6
Метки нет (Все метки)

Всем привет, работаю с Toolbar.
Задача такая:
1. по клику в NavigationView, открываю Фрагмент.
2. в открытом фрагменте, загрузить другой фрагмент и у него должна быть стрелка, вернуться к предыдущему фрагменту.(а не открывать NavigationView).
Как вообще эту кнопку отслеживать? которая в ToolBar. она всегда открывает NavigationView. или я чего не углядел.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"   Toolbar как отслеживать кнопку "стрелка назад"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 13:01     Toolbar как отслеживать кнопку "стрелка назад"
Посмотрите здесь:
Как обработать нажатие кнопки "Назад", чтобы открывался рекламный баннер? Android
Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." Android
Сворачивание приложения при нажатии кнопки "Назад" Android
Android Admob interstitial. Запретить закрытие кнопкой "назад"
Android В созданном браузере при нажатии кнопки "Назад" выходит из приложения
Выход пользователя по клавише "назад" из Activity, вызванного методом startActivityForResult Android
Android Полное завершение работы приложения при нажатии навигационной кнопки "Назад"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
10.11.2016, 10:40  [ТС]     Toolbar как отслеживать кнопку "стрелка назад" #2
Вроде нашел решение кому интересно
переопределил в каждом фрагменте toobar и повесил клик
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
        assert toolbar != null;
 
       toolbar.setHomeAsUpIndicator(R.drawable.ic_action_goleft);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fragment = null;
                Class fragmentClass = null;
                fragmentClass = MenuActivity.class;
                try {
                    fragment = (Fragment) fragmentClass.newInstance();
 
                } catch (Exception e) {
                    e.printStackTrace();
                }
                menuFragment = (MenuActivity) fragment;
              
                FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();
            }
        });
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
18.11.2016, 10:20  [ТС]     Toolbar как отслеживать кнопку "стрелка назад" #3
Возник еще вопрос
Как мне прикрепить Spinner с левого края? как в ВК.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"  
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 836
18.11.2016, 16:50     Toolbar как отслеживать кнопку "стрелка назад" #4
TonyBicbaev,del

Добавлено через 8 минут
ну не хочет так, пусть будет del

Добавлено через 1 час 56 минут
ну и del с вами
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,603
Завершенные тесты: 1
18.11.2016, 17:05     Toolbar как отслеживать кнопку "стрелка назад" #5
XML
1
2
3
4
5
6
7
8
9
  <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary">
        <Spinner
            android:entries="@array/spinnerItems"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </android.support.v7.widget.Toolbar>
тема приложения естественно NoActionBar

Добавлено через 8 минут
короче говоря - спиннер надо не через меню делать, а добавлять программно либо прямо через xml
кэп подсказывает, что у тулбара есть метод addView()

только что лдя интереса проверил добавление программно и через xml - все работает
fraley
103 / 103 / 37
Регистрация: 24.05.2015
Сообщений: 313
20.11.2016, 12:40     Toolbar как отслеживать кнопку "стрелка назад" #6
Цитата Сообщение от TonyBicbaev Посмотреть сообщение
Вроде нашел решение кому интересно
переопределил в каждом фрагменте toobar и повесил клик
Есть более эффективное решение, при стандартном условии, что есть основное активити в нем FrameLayout с транзакциями фрагментов. Таким образом достаточно только в том же MainActivity добавить код ниже.
Естественно чтоб все это работало, фрагменты надо заменять с addToBackStack.

1)В активити наследуем интерфейс FragmentManager.OnBackStackChangedListener
2)Присваеваем слушателе к FragmentManager :
Java
1
fragmentManager.addOnBackStackChangedListener(this);
3)И соответственно имплементируем метод onBackStackChanged()
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Override
    public void onBackStackChanged() {
        int count = getSupportFragmentManager().getBackStackEntryCount();
        if (count > 0) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true); // show back button
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
        } else {
            getSupportActionBar().setDisplayHomeAsUpEnabled(false);//show hamburger
            toggle.syncState();
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    drawer.openDrawer(GravityCompat.START);
                }
            });
        }
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 05:21     Toolbar как отслеживать кнопку "стрелка назад"
Еще ссылки по теме:
Установить стрелку "назад" в action bar, что бы возвращаться к первому фрагменту Android
Android Свой Launcher. Срабатывает кнопка "назад"
Android Предусмотреть функцию "Назад" для фрагментов
Android Как убрать кнопку "меню"?
Settings Activity - При нажатии клавиши "Назад" не происходит возвращение на главный активити Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
22.11.2016, 05:21  [ТС]     Toolbar как отслеживать кнопку "стрелка назад" #7
Паблито, да addView() в самый раз)
Чет я не додумался (

Добавлено через 8 часов 46 минут
Паблито, не получается стрелочку у него в белый цвет покрасить на версиях пониже
использую AppCompatSpinner
Java
1
 spinner.setSupportBackgroundTintList(new ColorStateList(new int[][]{new int[0]}, new int[]{0xffFFFFFF}));
не красит хоть убей

Добавлено через 53 секунды
Паблито, причем кнопки нормально красит, а спиннер не хочет.

Добавлено через 15 часов 35 минут
Получилось перекрасить применив тему к спиннеру

XML
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.AppCompatSpinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/spinnersCalls"
    android:theme="@style/customSpinnerTheme"
   >
 
</android.support.v7.widget.AppCompatSpinner>
XML
1
2
3
4
5
 <style name="customSpinnerTheme" parent="Theme.AppCompat">
        <item name="colorControlNormal">#eaeaea</item>
        <item name="colorControlActivated">#000000</item>
        <item name="colorControlHighlight">#000000</item>
    </style>
Yandex
Объявления
22.11.2016, 05:21     Toolbar как отслеживать кнопку "стрелка назад"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru