kotlin - 为什么 onClickListener 在我的片段活动中不起作用?
问题描述
我是编程新手,在我的 FragmentHome.kt 中添加 onClickListener 时遇到了困难
我将此代码添加到我现有的活动中:
val exc = this.findViewById<Button>(R.id.execute)
exc.setOnClickListener {
Toast.makeText(this, "You clicked me.", Toast.LENGTH_SHORT).show()
}
我尝试在一个空白活动上设置 onClicklistener 并且它有效,但是当我将它添加到现有的 Fragment 活动时它什么也不做(它应该显示带有一些文本的 toast)我没有看到错误消息,所以我不知道问题可能出在哪里是。
谢谢你的回复。
enter code here
public class FragmentHome : Fragment() {
public class HomeFragmentElements : AppCompatActivity() {
private lateinit var spinView: Spinner
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.fragment_home)
val exc = this.findViewById<Button>(R.id.execute)
exc.setOnClickListener {
Toast.makeText(this, "You clicked me.", Toast.LENGTH_SHORT).show()
}
spinView = findViewById(R.id.spinner)
spinView.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
TODO("Not yet implemented")
}
override fun onNothingSelected(parent: AdapterView<*>?) {
TODO("Not yet implemented")
}
}
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false)
}
}
enter code here
解决方案
尝试将您的代码放入“onViewCreated”:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val exc = this.findViewById<Button>(R.id.execute)
exc.setOnClickListener {
Toast.makeText(this, "You clicked me.", Toast.LENGTH_SHORT).show()
}
}
onViewCreated 在“onCreateView”之后执行。视图绑定和初始化应该进入 onViewCreated
推荐阅读
- java - 如何从自定义对象为我的 GUI 属性赋值?
- asp.net - 在 web 方法中从数据库中获取数据在 vb.net 中返回 null
- django - 在 django 路径中添加多个值
- excel - 如果查找列是未知的,则查找数组最大值的单元格位置
- django - 如何从 django orm annotate 创建 json 响应?
- powerbi - 如何在 Power BI 中减去两行
- .net - 在 Entity Framework Core 中取消跟踪对象
- node.js - 尝试将推文从 Twitter API 下载到 Mongoose 时出错
- google-cloud-platform - 通过 gcloud auth 命令在联合实验室笔记本中对 pubsub 进行身份验证
- c - .exe 已触发断点