2016-04-18 8 views
1

場合には、それらをチェックしたい:私は、ボタン(そのはするつもりがあり私は配列にいくつかのボタンのIDを配置し、これは私のコードである条件

XML

<Button 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="8" 
    android:id="@+id/button8" 
    android:layout_alignTop="@+id/button7" 
    android:layout_toRightOf="@+id/button7" 
    android:layout_toEndOf="@+id/button7" /> 

を見ることができるように

private int[] numbers = { 
     R.id.button0, 
     R.id.button1, 
     R.id.button2, 
     R.id.button3, 
     R.id.button4, 
     R.id.button5, 
     R.id.button6, 
     R.id.button7, 
     R.id.button8, 
     R.id.button9, 
}; 

そして今:テキスト(1-9)及びIが配列したMainActivityのid =ボタン1-9

と計算)これらのIDボタンがクリックされた場合にのみ、特定のアクションを実行する必要があります。例:

public void onClick(View value) { 
    if (Arrays.asList(numbers).contains(value.getId())) { 
      Button button = (Button) value; 
      textField.append(button.getText()); 

しかし、動作しません。 Arrays.asList(numbers).contains(value.getId())は問題です。 getId()を使わずに値だけを入力しようとしましたが、うまくいきません。私はこことGoogleで助けを見ようとしましたが、役に立たないものは見つけられません。どんな助け?

+1

[Javaの、int配列がintが含まれている場合、簡体チェック]の可能な重複(http://stackoverflow.com/questions/12020361/java-simplified-check-if-int-array-contains-int ) – buczek

+0

ありがとうございました。その仕事に必要なさらに興味深いもの: – dddeee

答えて

2

Arrays.asListは、プリミティブ変数(intなど)ではbooleanを返しません。あなただけの、あなたがViewためint Sが含まれているあなたの配列リストを検索するため、これは明らかに動作しません.contains(value)を入力する場合は、代わり

public void onClick(View value) { 
    if (ArrayUtils.contains(numbers, value.getId()) { 
     ... 
    } 
} 
+0

それはそのように機能します。回答と説明をありがとうございます。 – dddeee

-1

ArrayUtils.contains(配列、キー)を使用します。 問題は、value.getID()がR.id.XXXを返さないということです。

それぞれのボタンにOnClickListenerを追加してforループにパックするだけでよいでしょう。同様に:

for(every button){ 
button.setOnClickListener(new OnClickListener(){ 
    textField.append(button.getText()); 
}); 
} 
+0

実際にはvalue.getId()は、クリックされたViewのR.id.XXXと同じ値を返しますので、間違っています。問題は、intにArrays.asListを使用できないことです。 –

関連する問題