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

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

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

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

09.11.2016, 13:01. Просмотров 902. Ответов 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 Studio, был выбран активити "Google AdMob...

Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." - Программирование Android
Здравствуйте, Можно ли сделать приложение на весь экран, и убрать от туда вспомогательные кнопки "Назад, Главное окно..." или же хотя бы...

Сворачивание приложения при нажатии кнопки "Назад" - Программирование Android
Как сделать, чтобы при нажатии кнопки "назад" приложение не закрывалось, а сворачивалось?

Admob interstitial. Запретить закрытие кнопкой "назад" - Программирование Android
Как сделать так, чтобы межстраничное объявление закрывалось только нажатием на экране. А кнопка "назад" была не активна или выскакивал...

В созданном браузере при нажатии кнопки "Назад" выходит из приложения - Программирование Android
Всем привет! Недавно начал изучать как разрабатывать приложения под Android. Хочу написать браузер для Android специально для одного...

Выход пользователя по клавише "назад" из Activity, вызванного методом startActivityForResult - Программирование Android
Здравствуйте. Ситуация такая. Из MainActivity вызывается другое Activity методом startActivityForResult. Это другое Activity переходит в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
10.11.2016, 10:40  [ТС] #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  [ТС] #3
Возник еще вопрос
Как мне прикрепить Spinner с левого края? как в ВК.
Миниатюры
Toolbar как отслеживать кнопку "стрелка назад"  
androbro
326 / 286 / 60
Регистрация: 17.10.2014
Сообщений: 842
18.11.2016, 16:50 #4
TonyBicbaev,del

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

Добавлено через 1 час 56 минут
ну и del с вами
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,742
Завершенные тесты: 1
18.11.2016, 17:05 #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
105 / 105 / 38
Регистрация: 24.05.2015
Сообщений: 317
20.11.2016, 12:40 #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);
                }
            });
        }
    }
TonyBicbaev
3 / 3 / 0
Регистрация: 04.11.2013
Сообщений: 129
22.11.2016, 05:21  [ТС] #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>
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 05:21
Привет! Вот еще темы с ответами:

Полное завершение работы приложения при нажатии навигационной кнопки "Назад" - Программирование Android
Здравствуйте. Имеется приложение. При нажатии кнопки &quot;Домой&quot; приложение выходит на главный экран и остается активным в панели...

Установить стрелку "назад" в action bar, что бы возвращаться к первому фрагменту - Программирование Android
Добрый день.Это снова я) И новый вопрос, есть активити и несколько фрагментов.Первый фрагмент подгружается при старте приложения,в...

Свой Launcher. Срабатывает кнопка "назад" - Программирование Android
Здравствуйте! -Пишу свой простенький Laucher(во многом опирался на этот пример). -Тестирую на телефоне(texet). -При загрузке...

Предусмотреть функцию "Назад" для фрагментов - Программирование Android
Добрый день! Как можно проще(главное не колхозно) сделать так чтобы после открытии фрагмента если нажать кнопку &quot;назад&quot; то открывался...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.11.2016, 05:21
Ответ Создать тему
Опции темы

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