3

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

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

考虑下一段代码,我没有使用视图变量,但我仍然需要在方法中传递它,怎么会?:

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

2 回答 2

8

所以你知道哪个View在调用该方法。这就像实现OnClickListenerfor you 活动,创建的方法是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"属性时为您实现。

于 2013-06-11T22:57:00.227 回答
1

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

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

回答你的问题...

试想一下,您的活动有多个按钮(假设它是 5 个)并且在被单击时这些按钮会调用相同的函数(即 onClick())。那么,程序如何知道哪个按钮被点击。答案很简单,只需将视图参数传递给 onClick() 函数,该函数将允许访问有关单击的按钮的信息。

于 2017-09-28T08:58:37.920 回答