【发布时间】:2020-08-07 08:00:00
【问题描述】:
我在一个应用程序上实现了一个基本的导航组件,该组件由一个 MainActivity 组成,该组件包含一个 Toolbar(我已添加它以具有后退箭头功能)和一个片段以 Fragment A 开头的容器。在这个片段中,我有一个按钮,它重定向到一个空白的 Fragment B。
我可以使用 Navigation 组件从底部的 Android 导航返回 fragment A(从 fragment B),但我想使用来自我添加的工具栏。 我实现了将 setSupportActionBar(findViewById(R.id.toolbar)) 放入 Main Activity 和 (activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true) 的箭头 在 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)
}
添加此项以删除 styles.xml
中的默认工具栏<item name="windowNoTitle">true</item>
在 FragmentB 中向上按钮不起作用 fragmentB with back not working
我想使用 导航组件 来做这件事,有什么想法吗?
谢谢。
【问题讨论】:
-
“在这个片段中,我有一个按钮可以重定向到空白片段 B”——您是否使用导航组件来执行此操作?你add the code that the docs call for了吗?换句话说,拥有minimal reproducible example 可以帮助我们帮助您解决问题!
-
我按照文档link 使用导航组件从片段 A 转到 B。谢谢!我将项目上传到回购并发布到问题:)
标签: android kotlin navigation components