【问题标题】:Android View Parameter for OnClickListener MethodOnClickListener 方法的 Android 视图参数
【发布时间】:2013-03-31 19:37:25
【问题描述】:

如果是愚蠢的问题,请不要介意,但我需要清除我的困惑..

对于 OnClickListener 在 android 的按钮上,我确实把它放在了 main.xml

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:text="Button"
    android:onClick="clicked"
/>

在java文件中我做了

  public void clicked(View v)
  {
   //  my code here 
  }

我的问题是为什么我们在调用 clicked 方法时需要传递 View view

【问题讨论】:

    标签: java android android-widget onclicklistener


    【解决方案1】:

    阿法伊克,

    因为在onCreate中没有获取Button就调用了方法。为了访问该按钮,您需要有一个视图。

    即 View v 代表你的按钮视图。

    如果你想访问 button ,假设你想在 It 上获取文本。您如何使用 findViewbyId 在不获取按钮的情况下获得它? 你会得到这样的按钮

    Button b=(Button)v;
    

    获取文本

    String text=b.getText();
    

    所以这里我们没有通过使用findViewById获得按钮

    一般来说,如果您想访问按钮,您需要获取该对象。但在这里你会从视图中得到它。不使用findViewById

    【讨论】:

    • ok 视图是因为按钮扩展了它,为什么我们需要它的对象视图?
    • @Sikander 您可以使用一种方法来获得多个按钮。在这种情况下,您应该知道如何区分它们。每个小部件都可以定义自己的 id,您可以通过 id 和 View 的方法 v.getId() 区分它们
    • @Sajmon 但在 xml 中我写了 android:onClick="clicked" 所以在点击方法中我只能处理这个按钮,对吗?
    • @Sikander 他的意思是说你可以为多个按钮调用 clicked 方法。即,如果您的 xml 有四个按钮,那么您可以为所有四个按钮设置 android:onClick="clicked",为了区分它们,您需要使用 v.get()==R.id.button1 等。
    • @Sikander 是的,您可以为多个按钮分配相同的方法签名,如 Pragnani 指出的那样。
    【解决方案2】:

    我想到的第一个原因是您可以将多个视图附加到同一个方法并使用 v.getId() 您可以根据按下的视图执行操作。

    一般来说,拥有与事件相关的视图可能会因多种原因而有用,例如更改其某些属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多