3

私は16(4x4)のテーブルを持っていますTextViews。それらの1つがクリックされた場合、その色を変更して、ブール配列からマークまたはマークを解除したいと思います。

私の.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。メソッド定義を元に戻して、1 つのパラメーター (ビュー) のみを受け入れるようにする必要があります。

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()

また、グリッドがあると述べているので、 を使用してGridViewを使用することもできOnItemClickListenerます。前に述べた注意事項 (ローカル変数を非ローカルにするか、または として宣言するfinal) はまだありますが、必要に応じて、よりクリーンになる場合があります。

于 2013-03-05T22:22:53.660 に答える