Слушатель кликов панели инструментов не применяется - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующий код в моем фрагменте для настройки панели инструментов:

with(root) {
            with(activity as AppCompatActivity) {
                setupActionBar(toolbar) {
                    setDisplayHomeAsUpEnabled(true)
                    setDisplayShowHomeEnabled(true)
                }
            }
            toolbar.setNavigationOnClickListener { activity?.finish() }
        }

Вот мой метод setupActionBar:

fun AppCompatActivity.setupActionBar(toolbar : Toolbar, action: ActionBar.() -> Unit) {
    setSupportActionBar(toolbar)
    supportActionBar?.run {
        action()
    }
}

И панель инструментов в моем макете:

    <?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".ui.detail.DetailFragment">

    <data>
        <variable
                name="artist"
                type="com.sample.android.lastfm.model.LastFmArtist"/>
    </data>

    <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <com.google.android.material.appbar.AppBarLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            <com.google.android.material.appbar.CollapsingToolbarLayout
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    app:collapsedTitleTextAppearance="@style/CollapsedToolbar"
                    app:contentScrim="?attr/colorPrimary"
                    app:expandedTitleTextAppearance="@style/ExpandedToolbar"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
                    app:title="@{artist.name}">

                <ImageView
                        android:id="@+id/movie_poster"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:scaleType="centerCrop"
                        app:layout_collapseMode="parallax"
                        app:imageUrl="@{artist.images}"
                        tools:ignore="contentDescription"/>

                <androidx.appcompat.widget.Toolbar
                        android:id="@+id/toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:minHeight="?attr/actionBarSize"
                        app:layout_collapseMode="pin"
                        app:theme="@style/Toolbar"/>

                <com.google.android.material.tabs.TabLayout
                        android:id="@+id/tabLayout"
                        android:layout_width="match_parent"
                        android:layout_height="@dimen/custom_tab_layout_height"
                        app:tabGravity="fill"
                        app:tabIndicatorColor="@color/colorAccent"
                        app:tabIndicatorHeight="4dp"
                        app:tabMode="fixed"/>

            </com.google.android.material.appbar.CollapsingToolbarLayout>

        </com.google.android.material.appbar.AppBarLayout>

        <androidx.viewpager.widget.ViewPager
                android:id="@+id/viewpager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

</layout>

Когда я нажимаю на панель инструментов, она не возвращает меня к предыдущему экрану.Кажется, это не кликабельно.

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Добавьте панель инструментов к вашему фрагменту XML и попробуйте этот код в вашем onCreateView

Toolbar toolbar = view.findViewById(R.id.toolbar); toolbar.setNavigationIcon(R.drawable.ic_back_button); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity().onBackPressed(); } });

0 голосов
/ 01 февраля 2019

Панель инструментов не должна быть:

<androidx.appcompat.widget.Toolbar
                        android:id="@+id/toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:minHeight="?attr/actionBarSize"
                        app:layout_collapseMode="pin"
                        app:theme="@style/Toolbar"/>

Скорее, она должна быть:

<androidx.appcompat.widget.Toolbar
                        android:id="@+id/toolbar"
                        android:layout_width="match_parent"
                        android:layout_height="?attr/actionBarSize"
                        app:layout_collapseMode="pin"
                        app:theme="@style/Toolbar"/>
0 голосов
/ 30 января 2019
(activity as AppCompatActivity).setSupportActionBar(toolbar)
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)

затем в вашем фрагменте

переопределить onOptionsItemSelected

 override fun onOptionsItemSelected(item: MenuItem?): Boolean {

            when (item?.itemId) {

                android.R.id.home -> {
                 activity?.onBackPressed()
                    }

        }
     return true
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...