我正在通过Android开发人员tutorial工作,现在我们正在创建一个方法来匹配我们为android:onClick="sendMessage"
提供的方法名称。
以下是方法:
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
文字说明了这个方法:
为了使系统将此方法与给予android:onClick的方法名称相匹配,签名必须完全如图所示。具体来说,该方法必须:
我理解为什么它必须公开以及为什么返回值为void,但为什么该方法采用(View view)而不仅仅是(view)?我来自Ruby背景,所以语法让我感到困惑。为什么我们传递这样的参数?
答案 0 :(得分:1)
why does the method take (View view) instead of just (view)?
View
表示它是class
而view
只是variable
,而{2}正在使view variable
成为View class
的对象可以调用它的所有方法。
答案 1 :(得分:0)
这是因为onClick()
接口中的OnClickListener
方法需要View
类型的参数。当您删除参数时,Android仍会尝试调用方法sendMessage(View view)
,但该方法不再存在,因此您会收到错误,应用会强行关闭。
参数视图是单击的实际视图(在您的情况下为按钮)。这样,您可以指定多个按钮来调用相同的方法,并在方法内部检查单击了哪个按钮。
有关详细信息,请参阅此LINK