android - android:onClick 属性定义在视图类 androidx.appcompat.widget.AppCompatButton
问题描述
我在 xml 中尝试了 2 个不同的 AppcompatButtons 和普通按钮,但我得到了同样的错误。 它是一个谷歌地图,我只想搜索一个城市,我会去城市位置
方法一
<androidx.appcompat.widget.AppCompatButton
app:layout_constraintLeft_toRightOf="@+id/sv_location"
android:id="@+id/startBtn"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:onClick="startBtn"
android:text="add"
tools:ignore="MissingConstraints" />
方法二
<Button
app:layout_constraintLeft_toRightOf="@+id/sv_location"
android:id="@+id/startBtn"
android:layout_marginLeft="5dp"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:onClick="startBtn"
android:text="add"
tools:ignore="MissingConstraints" />
我在按钮 onclick 中使用搜索视图
fun startBtn(view: View){
val searchView:SearchView =view.findViewById<SearchView>(R.id.sv_location)
lateinit var location: String
location = searchView.query.toString()
var addressList: List<Address>? = null
if (location == null || location == "") {
Toast.makeText(requireContext(),"provide location",Toast.LENGTH_SHORT).show()
}
else{
val geoCoder = Geocoder(requireContext())
try {
addressList = geoCoder.getFromLocationName(location, 1)
} catch (e: IOException) {
e.printStackTrace()
}
val addresss = addressList!![0]
val latLng = LatLng(addresss.latitude, addresss.longitude)
nMap!!.addMarker(MarkerOptions().position(latLng).title(location))
nMap!!.animateCamera(CameraUpdateFactory.newLatLng(latLng))
Toast.makeText(requireContext(), addresss.latitude.toString() + " " + addresss.longitude, Toast.LENGTH_LONG).show()
}
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(p0: String?): Boolean {
searchView.clearFocus()
return false
}
override fun onQueryTextChange(p0: String?): Boolean {
TODO("Not yet implemented")
return false
}
})
}
解决方案
这不起作用的原因是因为在 xml 的两个示例中,您都有一个指向方法“startBtn”的 onClick 属性。此方法未在您的活动中定义。一旦你定义了它,它就会告诉按钮一旦它被点击它应该做什么。以下是该方法的示例:
fun startBtn(v:View) {
Toast.makeText(this, "Clicked on Button", Toast.LENGTH_LONG).show()
}
在按钮所在的任何活动/片段中定义此方法。
对于您的第二个问题,请确保您正在导入以下内容:
import androidx.appcompat.widget.SearchView;
推荐阅读
- discord - 如何找到用户不和谐回复的消息内容
- delphi - 即使在 TFileStream 被释放后,也无法在 XP 上弹出 USB 驱动器
- flutter - How to fix this issue with a rounded app bar in Flutter?
- python - 如何使用 Python 在不丢失数据的情况下最好地查询 AWS 表?
- arrays - 从最左列开始沿对角线遍历矩阵
- spring-boot - Spring Boot JPA 获取父子节点
- python - 如何将 conda 包添加到 docker compose celery?
- discord.py - 是否可以在代码中更改 discord.py 机器人名称的颜色?
- owl - OWL 不相交的元素集
- web - 是否有分析服务可以为应用程序中的不同用户提供分析和统计信息?