【问题标题】:android: xml attribute android:onClick, why the method needs View parameterandroid:xml属性android:onClick,为什么方法需要View参数
【发布时间】:2013-06-07 22:56:30
【问题描述】:

我在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");
    }

【问题讨论】:

  • 如果您有五个按钮调用相同的onClick 方法,那么您要询问的参数是唯一能告诉您单击了哪个按钮的参数。

标签: android xml onclick


【解决方案1】:

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

进入方法后,您可以对按钮的 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:onClick="myOnClickMethod" 属性时,Android 只会为您实现OnClickListener

【讨论】:

    【解决方案2】:

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

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

    回答你的问题...

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

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2013-10-15
      • 2019-08-07
      • 1970-01-01
      • 2012-09-02
      相关资源
      最近更新 更多