Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将视图类对象作为参数传递给按钮调用的方法(视图)_Java_Android_Xml - Fatal编程技术网

Java 将视图类对象作为参数传递给按钮调用的方法(视图)

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

我正在尝试为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 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"