Java 将视图类对象作为参数传递给按钮调用的方法(视图)
我正在尝试为Android创建一个应用程序,我遵循本教程 有一部分Java 将视图类对象作为参数传递给按钮调用的方法(视图),java,android,xml,Java,Android,Xml,我正在尝试为Android创建一个应用程序,我遵循本教程 有一部分 /** Called when the user clicks the Send button */ public void sendMessage(View view) { // Do something in response to button } 然后,我遵循本教程,一切正常,直到我删除参数View 我的问题是为什么每次我都删除它,所以函数就是: /** Called when the user clicks
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
然后,我遵循本教程,一切正常,直到我删除参数View
我的问题是为什么每次我都删除它,所以函数就是:
/** Called when the user clicks the Send button */
public void sendMessage() {
// Do something in response to button
}
我运行应用程序,它强制关闭
有谁能启发我吗?谢谢该方法(通常称为
onClick(View-View)
)采用一个参数(与其关联的视图)。有关该功能的更多信息,请参阅。如果您不使用该参数,您希望它不会工作,是吗?如果您仔细查看XML,您将在按钮上看到以下属性:
android:onClick="sendMessage"
此属性表示单击按钮时,消息
public void sendMessage(View view)
被调用。这是因为OnClickListener
接口中的onClick
方法需要类型为View
的参数。当您删除该参数时,android仍然尝试调用方法sendMessage(View-View)
,但该方法不再存在,因此您将获得一个强制关闭
参数view
是单击的实际视图(在您的案例中为按钮)。这样,您可以指定多个按钮来调用同一个方法,并在方法内部检查单击了哪个按钮
如果您想要不带参数的方法,那么应该在代码中而不是在XML中分配它。将XML更改为
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:id="@+id/send_button" />
正如您所看到的,要编写的代码要多得多,但如果您需要,它确实为您提供了更大的灵活性。当您将此类内容放入xml中时:
android:onClick="sendMessage"
android框架将在您的按钮上添加OnClickListener。此“自动”生成的OnclickListener将尝试使用View类型的单个参数调用名为“sendMessage”的方法
如果此方法不存在,它将崩溃。Hi View参数定义按钮小部件,它将在View参数中获取按钮小部件的id。所以您需要在sendMessage()方法中放入view参数
android:onClick="sendMessage"