我使用NavGraph导航UI组件从一个片段导航到另一个片段。
设备用于导航的物理按钮,但如何激活应用程序顶部的后退箭头才能返回到上一个片段

NavGraph
<?xml version="1.0" encoding="utf-8"?>
<navigation 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"
android:id="@+id/nav_graph"
app:startDestination="@id/charactersFragment">
<fragment
android:id="@+id/charactersFragment"
android:name="com.example.breakingbad.CharactersFragment"
android:label="fragment_characters"
tools:layout="@layout/fragment_characters" >
<action
android:id="@+id/action_charactersFragment_to_characterDetailFragment"
app:destination="@id/characterDetailFragment" />
</fragment>
<fragment
android:id="@+id/characterDetailFragment"
android:name="com.example.breakingbad.CharacterDetailFragment"
android:label="fragment_character_detail"
tools:layout="@layout/fragment_character_detail" />
</navigation>CharacterDetailFragment -目前这并不能做太多事情
class CharacterDetailFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_character_detail, container, false)
}
}活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navController = Navigation.findNavController(this, R.id.fragment)
NavigationUI.setupActionBarWithNavController(this, navController)
}
}编辑
将活动代码更新为此,并且它起作用了
class MainActivity : AppCompatActivity() {
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navController = Navigation.findNavController(this, R.id.fragment)
NavigationUI.setupActionBarWithNavController(this, navController)
}
override fun onSupportNavigateUp(): Boolean {
return navController.navigateUp() || super.onSupportNavigateUp()
}
}谢谢R
发布于 2021-08-29 11:18:32
我们称之为“向上”导航按钮。有关此问题的讨论,请参阅此处:
How to handle up button inside fragment using Navigation Components
解决方案至少需要使用setupActionBarWithNavController()方法。
发布于 2021-08-29 12:11:45
只需将onSupportNavigateUp()添加到主活动中
override fun onSupportNavigateUp() = navController.navigateUp()发布于 2021-08-29 12:01:09
如果您使用导航抽屉布局实现此功能,则使用此行返回到上一个片段,但如果您希望使用底部导航和导航抽屉布局click here来实现导航组件。只是为了将来的帮助做个解释。
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayoutID)
NavigationUI.setupActionBarWithNavController(this, navController,
drawerLayoutID)https://stackoverflow.com/questions/68972281
复制相似问题