Показать предыдущий фрагмент - PullRequest
7 голосов
/ 01 февраля 2012

Как убрать текущий и показать предыдущий фрагмент? Например, если я нажму кнопку «Назад»

Я использую такую ​​конструкцию:

FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.remove(fragment).commit();

Но он просто удаляет текущий фрагмент, не показывая предыдущий

Ответы [ 3 ]

13 голосов
/ 01 февраля 2012

Вы должны позвонить FragmentTransaction.addToBackStack(null), где вы добавляете фрагмент, а затем позвоните FragmentManager.popBackStack(), когда хотите удалить его.

4 голосов
/ 11 февраля 2013

Добавьте этот метод в свою деятельность:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            if( this.getFragmentManager().getBackStackEntryCount() != 0 ){
                this.getFragmentManager().popBackStack();
                return true;
            }
            // If there are no fragments on stack perform the original back button event
        }

        return super.onKeyDown(keyCode, event);
    }

Тогда, где вы меняете фрагменты, сделайте это:

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(android.R.id.content, new YourFragmentName());
transaction.addToBackStack(null); // this is needed for the above code to work
transaction.commit();
0 голосов
/ 12 ноября 2013

Попробуйте показать предыдущий фрагмент после удаления:

  FragmentManager fm=getSupportFragmentManager();
  FragmentTransaction ft=fm.beginTransaction();
  ft.remove(fragment).commit();

  previousFragment=(SherlockFragment)getSupportFragmentManager()
    .findFragmentByTag(""+currentTagNum);
    getSupportFragmentManager().beginTransaction()
            .show(mFragment)
            .commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...