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

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

Восстановить пароль Регистрация
 
TonyBicbaev
 Аватар для TonyBicbaev
2 / 2 / 0
Регистрация: 04.11.2013
Сообщений: 95
09.11.2016, 13:01     Toolbar как отслеживать кнопку "стрелка назад" #1
Всем привет, работаю с Toolbar.
Задача такая:
1. по клику в NavigationView, открываю Фрагмент.
2. в открытом фрагменте, загрузить другой фрагмент и у него должна быть стрелка, вернуться к предыдущему фрагменту.(а не открывать NavigationView).
Как вообще эту кнопку отслеживать? которая в ToolBar. она всегда открывает NavigationView. или я чего не углядел.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"   Toolbar как отслеживать кнопку "стрелка назад"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2016, 13:01     Toolbar как отслеживать кнопку "стрелка назад"
Посмотрите здесь:

Как в Toolbar добавить дополнительные views Android
Получил рут через Baidu Root. Теперь хочу назад отключить. Как это сделать надежнее всего? Android
Как обработать нажатие кнопки "Назад", чтобы открывался рекламный баннер? Android
Android Одновременно и рисовать и отслеживать координаты нажатия
Android Как передавать данные в предыдущее activity, используя кнопку назад в action bar?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TonyBicbaev
 Аватар для TonyBicbaev
2 / 2 / 0
Регистрация: 04.11.2013
Сообщений: 95
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
2 / 2 / 0
Регистрация: 04.11.2013
Сообщений: 95
18.11.2016, 10:20  [ТС]     Toolbar как отслеживать кнопку "стрелка назад" #3
Возник еще вопрос
Как мне прикрепить Spinner с левого края? как в ВК.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"  
androbro
311 / 271 / 51
Регистрация: 17.10.2014
Сообщений: 805
18.11.2016, 16:50     Toolbar как отслеживать кнопку "стрелка назад" #4
TonyBicbaev,del

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

Добавлено через 1 час 56 минут
ну и del с вами
Паблито
не спать!
1785 / 1519 / 471
Регистрация: 12.05.2014
Сообщений: 5,542
Завершенные тесты: 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
72 / 72 / 27
Регистрация: 24.05.2015
Сообщений: 204
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 как отслеживать кнопку "стрелка назад"
Еще ссылки по теме:

Как изменить цвет одного из элементов ToolBar Android
Как добавить динамически в ToolBar виджет SearchView в нужных фрагментах Android
Android Нужно отслеживать движение зрачков

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

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

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