android - 如何正确使用 Kotlin 从 Home 片段中调用空白片段?
问题描述
class HomeFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
val v = inflater.inflate(R.layout.fragment_home, container, false)
val fab = v.findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
val blankFragment = BlankFragment()
val manager = childFragmentManager
manager.beginTransaction().replace(R.id.frame_container, blankFragment, blankFragment.tag).commit()
// System.out.println("You have reached the floating action button")
}
return v
}
}
出现未找到视图错误。我可能对 R.id.frame_content 有疑问,但 Kotlin 不会立即识别所有 id 值......
解决方案
这可能不是最好的方法,我为我在手机上回答时所做的可怕格式道歉,而且很难让它完美。无论如何在包含您的片段的活动中,例如 MainActivity.kt 添加...
supportFragmentManager.beginTransaction.add(R.id.fragment_home, HomeFragment.newInstance, "HomeFragment").commit()
在您的 HomeFragment.kt 中更改以下内容。
class HomeFragment: Fragment(){
companion object {
fun newInstance(): HomeFragment{
return HomeFragment() }
fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_home, container, false)
val activity = activity
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val clickListener = View.OnClickListener { view ->
when (view.getId()) {
R.id.fab -> NextFragment()
}
}
fab.setOnClickListener(clickListener)
}
NextFragment(){
val fragManager = activity?.supportFragmentManager
fragManager?.beginTransaction()?.replace(R.id.frame_container, BlankFragment.newInstance(), "blankFragment")?.commit()
}
确保对 BlankFragment.kt 进行相同的更改
class BlankFragment: Fragment(){
companion object {
fun newInstance(): BlankFragment{
return BlankFragment() }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_blank, container, false)
val activity = activity
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Do some stuff with your views in BlankFragment here
}
}
推荐阅读
- excel - 创建自动过滤搜索框
- python-3.x - AWS 到本地机器文件共享
- javascript - 满足条件时如何立即显示警报?
- ruby-on-rails - Rails 5 - 注册后,分配角色并删除默认角色
- c# - 如何在不在 IdentityHostingStartup 的控制器中创建策略
- node.js - 如何将错误从函数传递到 catch 块
- django - Heroku 无法提供 django 管理静态文件 - 其他静态文件有效
- c - LFS 5.7.Glibc-2.29 的完整性检查失败
- css - 所选行中单元格之间的线条颜色(TableView)
- html - 如何修复在另一半表单上重复一半样式的 CSS 表单?