Как получить ID элемента из View

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Есть у приложения один слой 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, и получается что данный код вполне себе корректный.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *