2016-09-03 2 views
1

Я хочу вернуться к моему предыдущему фрагменту, когда я нажимаю кнопку «Назад». То, что я делаю, не работает.Как вернуться к предыдущему фрагменту в Android

Код для замены фрагмента:

Fragment fragment=new MyFragment(); 
FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager 
    .beginTransaction(); 
fragmentTransaction.setCustomAnimations(R.anim.slide_in,R.anim.slide_out); 
fragmentTransaction.replace(R.id.container_body, fragment); 
fragmentTransaction.commit(); 

Код поймать хит кнопки Назад:

@Override 
public void onResume() { 
    super.onResume(); 
    getActivity().invalidateOptionsMenu(); 
    getView().setFocusableInTouchMode(true); 
    getView().requestFocus(); 
    getView().setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { 
       getActivity().finish(); 
       getActivity().overridePendingTransition(R.anim.slide_enter, R.anim.slide_exit); 
       return true; 
      } 
      return false; 
     } 
    }); 

Я также попытался

getActivity().getSupportFragmentManager().popBackStack(); 
+0

fragmentTransaction.addtobackstack (fragment.getClass(). GetSimpleName()); –

+0

Я уже реализовал, но все еще не работает – Shivangi

+0

посмотреть эту ссылку http://stackoverflow.com/questions/18305945/how-to-resume-fragment-from-backstack-if-exists –

ответ

0

Изменение так это мат помощь

Fragment fragment=new MyFragment(); 
       FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
       FragmentTransaction fragmentTransaction = fragmentManager 
         .beginTransaction(); 
       fragmentTransaction.setCustomAnimations(R.anim.slide_in,R.anim.slide_out); 
       fragmentTransaction.replace(R.id.container_body, fragment).addToBackStack(null); 
       fragmentTransaction.commit(); 

Сообщите мне, если какая-либо ошибка

+0

Нет ошибки, но кнопка «Назад» перестает работать. – Shivangi

+0

.addToBackStack (null); добавьте в каждый фрагмент, который вы хотите прослушать назад, кнопку controle – Manish

+0

Ничего не случилось – Shivangi

0

вы можете сделать, как показано ниже.

DetailsFragment detailsFragment = new DetailsFragment(); 
      Bundle bundle = new Bundle(); 
      bundle.putString("ID", Id); 
        detailsFragment.setArguments(bundle); 

      FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.add(R.id.detail_container, detailsFragment); 
      transaction.addToBackStack(this.getClass().getSimpleName()); 
      transaction.hide(DetailsFragment.this); 
      transaction.commit(); 
Смежные вопросы