Есть у приложения один слой LinearLayout, на котором расположены кнопки Button
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClickBtnNumber" android:text="1" /> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClickBtnNumber" android:text="2" /> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClickBtnNumber" android:text="3" /> <Button android:id="@+id/btn4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClickBtnNumber" android:text="4" /> <Button android:id="@+id/btn5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClickBtnNumber" android:text="5" /> </LinearLayout>
И все эти кнопки вешаются на одно событие onClickBtnNumber. По нажатию на кнопку в поле TextView должна добавляться цифра которая указана у кнопки, например на кнопке с android:text=»5″ должно в текстовое поле добавится «5»
Тут как раз и надо в событии определить ID кнопки, при входном параметре View, и
если android:id=»@+id/btn5″ то в TextView добавить 5
Определение ID элемента в событии onClick
С эти хорошо справляется этот код
public void onClickBtnNumber(View view){ int x = 0; String s; switch (view.getId()){ case R.id.btn1: x = 1; break; case R.id.btn2: x = 2; break; case R.id.btn3: x = 3; break; case R.id.btn4: x = 4; break; case R.id.btn5: x = 5; break; } if (x != 0){ TextView oTView = (TextView) findViewById(R.id.tv_result); s = String.valueOf(oTView.getText()); oTView.setText(s + String.valueOf(x)); } }
где, view.getId() — получает ID элемента, но в int
а в switch идет сравнение с R.id.btn1, который как не странно тоже int, и получается что данный код вполне себе корректный.