android:xml属性android:onClick,为什么该方法需要View参数

时间:2013-06-11 22:55:31

标签: android xml onclick

当我在activity的xml中创建一个android:onClick属性时,onClick定义的方法需要有View参数,为什么要查看?

即。 我的活动中的onClick方法----------> public void sayHello(View v){...}

考虑下一个代码,我没有使用view变量,但是我还是需要在方法中传递它,为什么会这样?:

public void onClick(View view){
        TextView t= new TextView(this);
        t=(TextView)this.findViewById(R.id.textView2);
        t.setText("new text");
    }

2 个答案:

答案 0 :(得分:7)

因此,您知道哪个View正在调用该方法。 这就像为您的活动实现OnClickListener一样,创建的方法是onClick(View v)(或arg0,具体取决于您的Eclipse),从xml定义它只是为View指定一种监听器,以及来自侦听器的方法作为该参数。

进入方法后,您可以切换按钮的ID,执行不同的操作:

public void myOnClickMethod(View v){
    switch(v.getId()){
       case R.id.button1:
          //Do something for button 1
       break;
       case R.id.button2:
          //Do something for button 2
       break;
    }
}

简而言之。 Android在您定义OnClickListener属性时只为您实现android:onClick="myOnClickMethod"

答案 1 :(得分:1)

在回答这个问题之前,我想提一下观点是什么......

Android应用包含的活动类似于屏幕,其中还包含GUI元素(如按钮)。简单来说,那些GUI元素称为视图。

回答你的问题...

想象一下你的活动有多个按钮的情况(我们认为它是5),点击这些按钮会调用相同的函数(即onClick())。那么,程序将如何知道点击了哪个按钮。答案很简单,只需将一个view参数传递给onClick()函数,该函数将允许访问有关所点击按钮的信息。