Я реализовал базовый c компонент навигации в приложении, которое состоит из MainActivity , который содержит Панель инструментов (которую я добавил, чтобы иметь функцию стрелки назад) и контейнер фрагмента, начинающийся с Fragment A . В этом фрагменте у меня есть кнопка, которая перенаправляет на пустой фрагмент B .
. Я могу вернуться к фрагменту A (из фрагменту B ) снизу Android навигация с использованием компонента Навигация, но я хочу сделать то же самое, используя стрелку назад на добавленной мной панели инструментов. Я реализовал стрелку, поместив setSupportActionBar (findViewById (R.id.toolbar)) * в Основная активность и (активность в качестве AppCompatActivity) .supportActionBar? .SetDisplayHomeAsUpEnabled (true) on Fragment B , но когда я нажимаю на него, он не перенаправляется на Fragment A , потому что (я полагаю), что задний стек пуст.
MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.toolbar))
}
MainActivity xml
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:navGraph="@navigation/nav_graph" />
Фрагмент B
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
Добавлено это позволяет удалить панель инструментов по умолчанию в стилях . xml
<item name="windowNoTitle">true</item>
В FragmentB кнопка вверх не работает фрагмент B с не работающей спиной
Я хочу сделать это, используя Компонент навигации , есть идеи?
Спасибо.