Как высвечивать имя нажатой кнопки в TextView

263
22 марта 2017, 15:49

У меня есть три кнопки A, B, C. обработчик одинаков, методом onClik10(). У кнопок разные имена. Эти кнопки открывает NavigationDrawer. в NavigationDrawer есть TextView.

Как сделать так, чтобы при нажатии кнопки высвечивал имя нажатой кнопки в этот TextView?

Вот мой код:

public void onClick10 (View view){
    if(drawer.isDrawerOpen(Gravity.LEFT)){
        drawer.closeDrawer(Gravity.LEFT);
    }
    else{
        drawer.openDrawer(Gravity.LEFT);
    }
    tv.setText (дальше как писать)......???
}
Answer 1

В метод onClick(...) передается view, по которому был совершен клик. Соответственно можно у этого view брать id и далее крутиться от него.

Пример:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/first_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="First button"
        android:onClick="onClick"/>
    <Button
        android:id="@+id/second_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Second button"
        android:onClick="onClick"/>
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

MainActivity:

public class MainActivity extends AppCompatActivity {
    private Button mFirstButton;
    private Button mSecondButton;
    private TextView mTextView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mFirstButton = (Button) findViewById(R.id.first_button);
        mSecondButton = (Button) findViewById(R.id.second_button);
        mTextView = (TextView) findViewById(R.id.text_view);
    }
    public void onClick (View view) {
        switch (view.getId()) {
            case R.id.first_button:
                mTextView.setText(mFirstButton.getText());
                break;
            case R.id.second_button:
                mTextView.setText(mSecondButton.getText());
                break;
        }
    }
}
READ ALSO
Не могу открыть в Xcode, c помощью ios-moe

Не могу открыть в Xcode, c помощью ios-moe

Раньше получалось, а теперь, когда хочу открыть в Xcode вылезает ошибкаOpen Xcode project

310
Spring Data, lazy загрузка связанной сущности

Spring Data, lazy загрузка связанной сущности

Есть две сущности Тема (Topic) и ответы для неё (Answer)Правильно ли работает Lazy?

299
Как в IDEA вернуть закрытую вкладку с логами

Как в IDEA вернуть закрытую вкладку с логами

Запускаю проект, во вкладке RUN вижу вкладки для console и logСлучайно закрываю log и не понимаю как её вернуть без перезапуска проекта

279
Свёртывание в Jar

Свёртывание в Jar

Написал приложение на Intellij IDEAСворачиваю в jar

209