繁体   English   中英

单击时打开一个带有所选片段的新活动

[英]Open a new Activity with chosen Fragment on click

这就是我想要实现的目标:

  • 我在活动 A 中有几个选项可供选择(按钮)
  • 点击其中任何一个后,我想被带到活动 B
  • Activity B 应该包含一个常量部分(音频)和一个带有图像和文本的 Fragment,具体取决于您在 Activity A 中选择的按钮。

它可以实现吗? 我尝试将 startActivity 和 getSupportFragmentManager (等)作为我的 onClick 方法,但没有用,也许还有另一种方法?

在活动 B 中创建一个方法(java 中的静态方法,kotlin 中的同伴)来创建意图:

companion object {
    const val ARG_FRAGMENT_TO_LOAD = "argFragment"

    fun newIntent(context:Context, fragmentTagToLoad:String): Intent {
        return Intent(context, ActivityB::class.java).apply {
            putString(ARG_FRAGMENT_TO_LOAD, fragmentTagToLoad)
        })
    }
}

然后,在活动 A 中,您可以使用此意图启动活动 B。

myButton?.setOnClickListener {
    startActivity(ActivityB.newIntent(this, SomeFragmentToLoad.ARG_TAG))
}

然后,再次在活动 B 中,您将在意图中收到此参数,以便您可以处理它。 它通常在 onCreate() 内部完成:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val fragmentTagToLoad = intent.getStringExtra(ARG_FRAGMENT_TO_LOAD) ?: ""

    if(fragmentToLoad.isNotEmpty() {
        // Use fragment manager to load fragment into container.
    }
    ...
}

最后,在活动 B 中,您可以使用参数使用(通常支持)片段管理器加载所需的片段。

当然,您应该将 ARG_TAG 定义为 SomeFragmentToLoad 中的字符串常量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM