Как я могу запрограммировать кнопку возврата на мобильном телефоне, чтобы перейти к основной деятельности - PullRequest
0 голосов
/ 10 июля 2019

Я разрабатываю приложение, в котором у меня есть menu с Buttons, и в каждом Button пользователь проходит через Fragments. Когда я нажимаю заднюю Button телефона (первую из трех buttons устройства, стрелка), он переходит к предыдущему Fragment, но я хочу вернуться к menuscreen.
Как я могу запрограммировать это Button, чтобы открыть menu activity?

Ответы [ 3 ]

1 голос
/ 10 июля 2019

Когда я нажимаю кнопку «Назад» телефона (первая из трех кнопок устройства, стрелка), она переходит к предыдущему фрагменту

Это означает, что вы используетестек для ваших фрагментов.

Первое решение

Простое решение - просто удалить (не использовать) задний стек

Второе решение

переопределите OnBackStack, а затем управляйте своей деятельностью

@Override
public void onBackPressed() {

   finish();
   startActivity(new Intent(this, MenuActivity.class));

}

Третье решение

, для его реализации требуется больше усилий, но вы можете попробовать. @ MaximeJallu решение

1 - Создать интерфейс

    public interface IOnBackPressed {
    /**
     * If you return true the back press will not be taken into account, otherwise the activity will act naturally
     * @return true if your processing has priority if not false
     */
    boolean onBackPressed();
}

2 - Подготовить свою деятельность

  public class MyActivity extends Activity {
    @Override public void onBackPressed() {
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
       if (!(fragment instanceof IOnBackPressed) || !((IOnBackPressed) fragment).onBackPressed()) {
          super.onBackPressed();
       }
    } ...
}

Наконец в вашем фрагменте:

public class MyFragment extends Fragment implements IOnBackPressed{
   @Override
   public boolean onBackPressed() {
       if (myCondition) {
            //action not popBackStack
            return true; 
        } else {
            return false;
        }
    }
}
1 голос
/ 10 июля 2019

Вы можете попробовать переопределить onBackPressed() и затем перенаправить все обратные нажатия на действия в меню:

@Override
public void onBackPressed() {
    Intent goToMenuActivity = new Intent(getApplicationContext(), YourActivity.class);
    startActivity(goToMenuActivity);
}
0 голосов
/ 11 июля 2019

Существует два метода

ссылка это 1

@override
public void onBackPressed(){
  super.onBackPressed();
  finish();
}

2

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
   {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) 
        {
            return false; 
        }
        return super.onKeyDown(keyCode, event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...