相关疑难解决方法(0)

如何通过操作栏中的后退按钮转到上一个片段?(科特林)

我有两个片段,我想使用操作栏中的后退按钮在它们之间创建交互。理想情况下,我希望保存先前片段的状态。我只能找到有关活动的信息。

对于片段我发现了这个

private fun setupBackButton() {
        if (activity is AppCompatActivity) {
            (activity as AppCompatActivity?)?.supportActionBar?.setDisplayHomeAsUpEnabled(true)
        }
    }
Run Code Online (Sandbox Code Playgroud)

但它只显示后退按钮,点击没有任何反应。

编辑

在第一个片段中,我将第二个片段称为:

val fragment = UserContentFragment()
fragment.setUser(item.user)

if (fragmentManager != null) {
    fragmentManager!!
      .beginTransaction()
      .replace(R.id.main_layout, fragment)
      .addToBackStack(null)
      .commit()
}
Run Code Online (Sandbox Code Playgroud)

这是我的UserContentFragment第二个片段:

class UserContentFragment : Fragment() {

    private lateinit var user: SearchUser

    fun setUser(user: SearchUser) {
        this.user = user
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val root = inflater.inflate(R.layout.fragment_user_content, container, false)

        val userImage = root.findViewById(R.id.user_img) as ImageView
        if …
Run Code Online (Sandbox Code Playgroud)

android android-fragments kotlin android-actionbar android-navigation

4
推荐指数
1
解决办法
2万
查看次数

导航组件,如何在导航抽屉中显示普通的向上/后退按钮而不是汉堡包图标

我的活动中有三个顶级目标片段:

appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.trackerFragment,
            R.id.nutrientFragment,
            R.id.settingsFragment
        ),
        drawerLayout
    )
Run Code Online (Sandbox Code Playgroud)

这意味着所有这些片段将显示汉堡按钮而不是正常的后退箭头。问题是我的应用程序中有一个“转到 Nutrient”按钮,可以导航到 NutrientFragment,这是顶级目的地。我希望这个片段在使用抽屉导航时仍然显示汉堡包图标,但在通过“转到营养物”按钮导航时显示正常的后退/向上按钮。

我最初的想法是在导航到 时传递一个布尔值作为参数NutrientFragment,并在内部onCreateView()根据布尔值,删除汉堡包图标或添加后退按钮。但这似乎有点丑陋且效率低下,特别是如果将来我添加更多可能存在相同问题的目的地。我也不知道如何“删除汉堡包图标并替换为正常的后退按钮”。关于如何实施有什么想法吗?我找到的所有答案要么是旧的已弃用的java代码,要么不完全是我正在寻找的。

谢谢。

android kotlin navigation-drawer android-navigation android-architecture-components

1
推荐指数
1
解决办法
3120
查看次数