OnClick函数中的Android参数

时间:2013-03-05 22:21:25

标签: android onclick textview

我有一张16(4​​x4)TextViews的表格。如果单击其中一个,我想更改其颜色并从布尔数组中标记或取消标记。

在我的.xml中,TextViews看起来像这样:

<TextView
    android:id="@+id/bonus0"
    android:layout_width="0dip"
    android:layout_height="50dip"
    android:layout_weight="0.25"
    android:layout_margin="1dip"
    android:background="#FFFFFF"
    android:textIsSelectable="false"
    android:onClick="ClickTurnColor"
    android:clickable="true"
    android:textSize="25sp" 
/>

因此,点击TextView即可启动ClickTurnColor()功能。 在这个函数中,我需要onCreate()函数中的一些变量。 当我尝试将它们作为ClickTurnColor()函数的参数传递时,我会收到错误。

任何人都可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

onCreate()之外声明所需的变量,在onCreate()中初始化它们,然后在ClickTurnColor方法中使用它们。您必须还原其方法定义,以便它只接受一个参数(视图):

public void ClickTurnColor (View v)
{
 //implementation
}

另外,请记住,Java命名约定规定方法应以小写字母开头。

或者采用非xml方法并在onCreate()内部设置监听器,如果你真的必须将这些变量保持在本地:

button.setOnClickListener (new OnClickListener () {
  @Override
  public void onClick (View v)
  {
    //use your variables here
  }
});

但是,现在您必须将这些变量final设为onCreate(),如果它们不是实例变量,并且您将它们保持为final的本地变量。

此外,既然您确实提到了网格,那么您可以尝试使用GridView并使用OnItemClickListener。它仍然附带我之前提到过的警告(要么将局部变量设置为非本地变量,要么将它们声明为{{1}}),但根据您的需要,它可能更清晰。