首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回到上一个片段- NavGraph

返回到上一个片段- NavGraph
EN

Stack Overflow用户
提问于 2021-08-29 11:07:05
回答 3查看 187关注 0票数 0

我使用NavGraph导航UI组件从一个片段导航到另一个片段。

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

NavGraph

代码语言:javascript
复制
 <?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 -目前这并不能做太多事情

代码语言:javascript
复制
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)
    }
}

活动

代码语言:javascript
复制
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)
    }
}

编辑

将活动代码更新为此,并且它起作用了

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

发布于 2021-08-29 11:18:32

我们称之为“向上”导航按钮。有关此问题的讨论,请参阅此处:

How to handle up button inside fragment using Navigation Components

解决方案至少需要使用setupActionBarWithNavController()方法。

票数 3
EN

Stack Overflow用户

发布于 2021-08-29 12:11:45

只需将onSupportNavigateUp()添加到主活动中

代码语言:javascript
复制
override fun onSupportNavigateUp() = navController.navigateUp()
票数 1
EN

Stack Overflow用户

发布于 2021-08-29 12:01:09

如果您使用导航抽屉布局实现此功能,则使用此行返回到上一个片段,但如果您希望使用底部导航和导航抽屉布局click here来实现导航组件。只是为了将来的帮助做个解释。

代码语言:javascript
复制
appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayoutID)
NavigationUI.setupActionBarWithNavController(this, navController,
     drawerLayoutID)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68972281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档