Триггер назад функциональность кнопки при нажатии кнопки в Android - PullRequest
48 голосов
/ 10 января 2011

Я знаю, что у нас есть кнопка «назад» в Android, чтобы вернуть нас назад к предыдущей форме, но мой руководитель попросил добавить функциональность кнопки «Назад» при нажатии кнопки

Как я могу это сделать?

Ответы [ 7 ]

120 голосов
/ 10 января 2011

Вы должны использовать finish(), когда пользователь нажимает кнопку, чтобы перейти к предыдущему действию.

Button backButton = (Button)this.findViewById(R.id.back);
backButton.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    finish();
  }
});

В качестве альтернативы, если вам действительно нужно, вы можете попытаться вызвать собственное нажатие клавиши «назад»:

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));

Выполните оба из них.

34 голосов
/ 10 января 2011

Если вам нужна точная функциональность кнопки «Назад» в вашей пользовательской кнопке, почему бы просто не вызвать yourActivity.onBackPressed () таким образом, если вы переопределите функциональность кнопки, ваша пользовательская кнопка будет работать так же .

10 голосов
/ 03 февраля 2011
public boolean onKeyDown(int keyCode, KeyEvent event) {
             if (keyCode == KeyEvent.KEYCODE_BACK) {
                     // your code here
                     return false;
             }
         return super.onKeyDown(keyCode, event);
     }
7 голосов
/ 23 ноября 2011

layout.xml

<Button
    android:id="@+id/buttonBack"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="finishActivity"
    android:text="Back" />

Activity.java

public void finishActivity(View v){
    finish();
}

Связанный:

3 голосов
/ 04 декабря 2018

Если вы внутри фрагмента, то вы пишете следующую строку кода в своем прослушивателе при нажатии, getActivity().onBackPressed(); это прекрасно работает для меня.

0 голосов
/ 09 февраля 2019

С помощью этого кода я решил мою проблему. Для кнопки «Назад» вставьте эти две строки кода. Надеюсь, это поможет вам.

Вставьте только этот код при нажатии кнопки

super.onBackPressed();

Пример:-

Button backButton = (Button)this.findViewById(R.id.back);
backButton.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    super.onBackPressed();
  }
});
0 голосов
/ 02 февраля 2019

Ну, ответ от @sahhhm не сработал для меня, мне нужно было вызвать backKey с пользовательской кнопки, поэтому я просто позвонил,

backAction.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MyRides.super.onBackPressed();

            }
});

, и он работает какочарование.Надеюсь, это поможет и другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...