我有一张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()
函数的参数传递时,我会收到错误。
任何人都可以帮助我吗?谢谢!
答案 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}}),但根据您的需要,它可能更清晰。