3

我有一张 16 (4x4) 的桌子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(),我得到了错误。

有谁能够帮助我?谢谢!

4

1 回答 1

1

在外面声明你需要的变量onCreate(),在里面初始化onCreate(),然后在ClickTurnColor方法中使用。您必须恢复其方法定义,使其仅接受一个参数(视图):

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

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

onCreate()或者,如果您确实必须将这些变量保留在本地,请采用非 xml 方法并将侦听器设置在内部:

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

但是,final如果这些变量不是实例变量并且您将它们保留在onCreate().

此外,由于您确实提到您有一个网格,您可以尝试使用 aGridView和使用 an OnItemClickListener。它仍然带有我之前提到的警告(使局部变量成为非局部变量或将它们声明为final),但根据您的需要,它可能会更干净。

于 2013-03-05T22:22:53.660 回答