как обрабатывать обратное нажатие во фрагментах и ​​активности

введите описание изображения здесьУ меня есть фрагмент вкладки, который содержит 3 фрагмента: фрагмент Фрагмент фрагмента B фрагмент c. 1) Теперь при щелчке элемента из фрагмента открывается действие. Как обрабатывать кнопку «назад» и «назад» в этом случае.

2) Теперь при щелчке элемента из фрагмента C открывается активность, которая содержит 3 вкладки, содержащие фрагмент X фрагмент y фрагмент z . как обращаться с нажатием кнопки «назад» и «назад» в этом случае.

Кто-нибудь может мне помочь???


person Prachi Karapurkar    schedule 22.07.2016    source источник
comment
Во фрагменте getActivity().onBackPressed();   -  person Rathod Vijay    schedule 22.07.2016


Ответы (2)


Используйте этот код для кнопки «Назад» по умолчанию:

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

для кнопки заднего изображения просто используйте finish() в onClickListener();

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

если предыдущее действие уже закрыто, используйте Intent для навигации:

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

       Intent i = new Intent(currentActivity.this, previousActivity.class);     
       startActivity(i);
       finish(); 

      }
    });
person Manish    schedule 22.07.2016
comment
я пробовал второе решение с кнопкой изображения, но оно напрямую закрывает приложение :( - person Prachi Karapurkar; 22.07.2016
comment
где ты это применил?? - person Manish; 22.07.2016
comment
у меня есть фрагмент, который содержит recycleview при нажатии на элемент, открывается активность, поэтому теперь при обратном нажатии я хочу перейти от текущей активности обратно к фрагменту, как я могу это сделать ?? - person Prachi Karapurkar; 22.07.2016
comment
я использовал намерение, но это не плавное обратное нажатие - person Prachi Karapurkar; 22.07.2016
comment
проверьте, может быть, другие представления требуют времени для загрузки, но если вы хотите перейти от одного действия к другому, вы должны использовать намерение - person Manish; 22.07.2016

сначала сделайте метод для активности, в которой загружается фрагмент. например, я загружаю фрагмент в активность NavigationDrawer.class

public Fragment getVisibleFragment(){
    FragmentManager fragmentManager = NavigationDrawer.this.getSupportFragmentManager();
    List<Fragment> fragments = fragmentManager.getFragments();
    if(fragments != null){
        for(Fragment fragment : fragments){
            if(fragment != null && fragment.isVisible())
                return fragment;
        }
    }
    return null;
}

затем вызовите метод

@Override
public void onBackPressed() {

       //call the method
    if (getVisibleFragment()!=null) {

        //check which current visible fragment
        String nameFragment = getVisibleFragment().toString();
        if (nameFragment.contains("nameFragmentA")) {
            //your action A
         }else if(nameFragment.contains("nameFragmentB")){
            //your action B
         }else{
           //another action
         }

       }
}

Это может относиться к вопросам 1 и 2. Надеюсь, это поможет вам!

person Zainal Fahrudin    schedule 26.07.2016