android方法/ java中未使用的参数

时间:2013-11-18 21:05:40

标签: java android xml

在java中,我们使用方法参数有很多原因,但我从未在我的方法中使用过参数,除非我需要它们

在android中为我想要点击的按钮定义一个方法时,我在Button元素下用XML定义了我的方法

android:onClick="showText" 

然后,在我的ProjectName.java文件中,我定义了方法

public void showText(View view){  

} 

我从不使用View参数..我不需要它。 通过在Stackoverflow上提问,我被告知参数中的View是被点击的视图。 Button是View的子类,TextView也是如此,因此,这种答案有意义。 但我的问题是....这是仅仅onClick方法的规则吗? 另外,为什么我不能将Button作为参数传递?按钮是被点击的实际“视图”,为什么不按钮?

此外,还有其他类似的方法,如果是这样,它们是否都像View参数一样遵循规则,让我们说如果我有一个名为“A”的类,它有一个子类“B”,那么class有一个子类“C”,如果我想使用onClick方法,我只能传递最高类作为参数?

为了简化这一点,是否有任何情况我会将除“View”以外的任何其他内容作为参数传递给这些方法?

谢谢。

2 个答案:

答案 0 :(得分:2)

这取决于我们谈论的方法。由于在onClick级别生成View事件,因此只能传递View。但是,您可以轻松地将其转换为Button,您只需检查它是否为一个。

if (view instanceof Button) Button btn = (Button) view;

在其他情况下,当您向TextWatcher添加文本更改的侦听器时,您可能还有其他参数,例如EditText

答案 1 :(得分:1)

它使用View作为参数类型的原因是因为方法setOnClickListener实际上不是Button类的成员,而是View类的成员(从哪个按钮继承)。

这是: http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener)

因此,参数类型必须是View,因为它是在该级别定义的。

这也很有用,因为您可能会在几个不同的视图上使用相同的onClick处理程序。任何视图都可以有一个onClick事件。