为什么他们的参数类型为onClick方法

时间:2016-07-04 13:04:13

标签: android

....
android:onClick = "activity1";
....

public void activity1(View view)
{
 .....
}

为什么这个函数的参数类型为View

4 个答案:

答案 0 :(得分:2)

您可以在任何View上设置onClickListener。这意味着该侦听器不知道您设置侦听器的元素类型。

由于您可以在extend View上设置onClickListener的所有元素,因此它会为您提供视图,因为它确定您的元素是View

您自己可以检测单击了哪个元素,然后可以根据需要将其强制转换为特定元素。

答案 1 :(得分:1)

因为View是android所有小部件的基类。

例如TextView扩展了View,ImageView扩展了视图等等。

您可以编写View v = new TextView()

现在你可以使用View提供的基本功能,比如getItemID等。

答案 2 :(得分:0)

您可以在不同的视图上使用相同的onClick。因此,在这种情况下,视图将用于标识单击了哪个View。

例如 如果有3个按钮android:onClick = "activity"

你可以这样做

public void activity(View view)
{
    switch(view.getItemId()){

     case R.id.button1:
     break;
     case R.id.button2:
     break;
     case R.id.button3:
     break;

     }
}

现在,您可以在3个不同的按钮上使用相同的onClick。

答案 3 :(得分:0)

这样您就可以对多个不同的视图使用相同的方法。 请尝试以下代码

OnChanges

现在,您的活动方法<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onActivityClick" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onActivityClick" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onActivityClick" /> 将显示为

onActivityClick

所以基本上你可以为多个小部件使用相同的方法,并在你的应用程序中保存方法和额外代码的数量。

希望这会有所帮助。