【发布时间】:2021-01-05 10:09:16
【问题描述】:
我正在使用TabLayout 和ViewPager。我有 3 个片段和 3 个标签。我想访问activitymain.xml文件中的FloatingActionButton。
在每个片段中我都写了这样的代码:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val fab :View= (requireActivity() as MainActivity).findViewById(R.id.fab_main)
fab.setOnClickListener {
Toast.makeText(context,"Fragment1",Toast.LENGTH_SHORT).show()
}
}
但是当我单击每个片段中的FloatingActionButton 时,它会给出与最后一个片段相关的相同 Toast 消息。当我点击按钮时,我想在每个片段中执行不同的操作。
【问题讨论】:
-
您应该在活动中调用浮动操作按钮。您可以通过 viewpager 或片段管理器访问当前片段。
-
你试过在
onResume()中设置点击监听吗? -
但是我需要在片段中调用浮动操作按钮,因为我需要在片段中处理它。
-
@MohamedHamdy 现在我尝试了您的解决方案并且它有效。太感谢了!但我不明白是什么造成了将监听器放在 onResume() 中的差异。你能解释一下吗?
-
@AbdulsametKılınçarslan 要了解这部分,请在
onCreateView和onResume中添加日志记录,这将更容易理解差异,然后去阅读 @Daniel.Wang 的 cmets
标签: android android-layout kotlin android-fragments android-activity