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

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

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

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

09.11.2016, 13:01. Просмотров 586. Ответов 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 Свой Launcher. Срабатывает кнопка "назад"
Выход пользователя по клавише "назад" из Activity, вызванного методом startActivityForResult Android
Android Как убрать кнопку "меню"?
Android Полное завершение работы приложения при нажатии навигационной кнопки "Назад"
Android В созданном браузере при нажатии кнопки "Назад" выходит из приложения
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TonyBicbaev
 Аватар для TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 123
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
 Аватар для TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 123
18.11.2016, 10:20  [ТС]     Toolbar как отслеживать кнопку "стрелка назад" #3
Возник еще вопрос
Как мне прикрепить Spinner с левого края? как в ВК.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"  
androbro
318 / 278 / 54
Регистрация: 17.10.2014
Сообщений: 825
18.11.2016, 16:50     Toolbar как отслеживать кнопку "стрелка назад" #4
TonyBicbaev,del

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

Добавлено через 1 час 56 минут
ну и del с вами
Паблито
резкий
1961 / 1696 / 525
Регистрация: 12.05.2014
Сообщений: 6,051
Завершенные тесты: 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
91 / 91 / 31
Регистрация: 24.05.2015
Сообщений: 261
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 как отслеживать кнопку "стрелка назад"
Еще ссылки по теме:

Android Предусмотреть функцию "Назад" для фрагментов
Сворачивание приложения при нажатии кнопки "Назад" Android
Как обработать нажатие кнопки "Назад", чтобы открывался рекламный баннер? Android
Settings Activity - При нажатии клавиши "Назад" не происходит возвращение на главный активити Android
IOS "Toolbar" в Android Android

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

Или воспользуйтесь поиском по форуму:
TonyBicbaev
 Аватар для TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 123
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 как отслеживать кнопку "стрелка назад"
Ответ Создать тему
Опции темы

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