java将视图类对象作为参数传递给按钮调用的方法(视图)
我正在尝试为Android创建一个应用程序,我遵循本教程http://developer.安卓.com/training/basics/firstapp/starting-activity.html
有一部分
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
然后我学习了这个教程,一切都很顺利,直到我删除了参数View view
我的问题是为什么每次我都删除它,所以函数就是:
/** Called when the user clicks the Send button */
public void sendMessage() {
// Do something in response to button
}
我运行应用程序,它强制关闭
有谁能启发我吗?多谢各位
# 1 楼答案
当您将此类内容放入xml中时:
android框架会在你的按钮上添加一个OnClickListener。此“自动”生成的OnclickListener将尝试使用View类型的单个参数调用名为“sendMessage”的方法
如果这个方法不存在,它就会崩溃
# 2 楼答案
该方法(通常称为
onClick(View view)
)采用一个参数(与其关联的视图)。有关函数的更多信息,请参见http://developer.android.com/reference/android/view/View.OnClickListener.html。如果你不使用这个参数,你会认为它不起作用,是吗# 3 楼答案
如果仔细查看XML,您将在按钮上看到以下属性:
此属性表示单击按钮时,消息
被调用。这是因为
OnClickListener
接口中的onClick
方法需要View
类型的参数。当你移除这个参数时,android仍然试图调用方法sendMessage(View view)
,但是这个方法已经不存在了,因此你会得到一个强制关闭参数
view
是单击的实际视图(在本例中为按钮)。通过这种方式,您可以指定多个按钮来调用同一个方法,并在方法内部检查单击了哪个按钮如果希望方法不带参数,那么应该在代码中而不是在XML中分配它。将XML更改为
(请注意,
android:onClick
属性现在被删除,并且android:id
被添加。)然后在onCreate
方法中的活动中添加以下行:正如你所看到的,这是一个相当多的代码编写,但它确实提供了更多的灵活性,如果你需要它