2016-08-09 1 views
1

Это мое имя классаКак обрабатывать onBackPressed() в фрагменте?

public class PrimaryFragment extends Fragment implements OnRestartRequest { 

    @Override 
    public void onBackPressed() { 
     if (mCardStackLayout.isCardSelected()) { 
      mCardStackLayout.restoreCards(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

Ошибка на этой линии: super.onBackPressed();

Я не знаю, что это проблема в на спине нажатой кнопке фрагментировать класса.

+1

Проверьте этот пост HTTP://stackoverflow.com/questions/5448653/how-to-implement-onbackpressed-in-android-fragments?rq=1 –

+1

Пожалуйста, внимательно прочитайте http://stackoverflow.com/help/how-to-ask – Bobby

+0

Чтение ошибки сообщения помогли бы вам. :) – Sufian

ответ

2

В Fragment нет метода onBackPressed(). Вы можете сделать что-то вроде вызова getActivity(). OnBackPressed() из вашего фрагмента.

0

У Fragmetns нет своих OnBackPressed, и вам необходимо обработать их транзакцию из своего родительского Actvitiy, который содержит этот фрагмент.

Пример: // в Родительской активности на Fragmetn

@Override 
public void onBackPressed() { 
    // This will get you total fragment in the backStack 
    int count = getFragmentManager().getBackStackEntryCount(); 
    switch(count){ 
     case 0: 
      super.onBackPressed(); 
      break; 
     case 1: 
      // handle back press of fragment one 
      break; 
     case 2: 
      // and so on for fragment 2 etc 
      break; 
     default: 
      getFragmentManager().popBackStack(); 
      break; 
    } 
} 
1

Вы должны позвонить getActivity() из внутри вас фрагмент так:

getActivity().onBackedPressed(); 

Примечание: смотреть, что вы импортируете право getActivity(), если используйте android.support.v4.app.Fragment, вам необходимо импортировать правильный пакет.

1

Фрагмент не имеет onBackPress() способ, как у нас есть для деятельности. Я предпочитаю обработку назад нажмите используя ниже код, надеюсь, что это поможет вам:

private void handleBackPress(View view) { 


     view.setFocusableInTouchMode(true); 
     view.requestFocus(); 
     view.setOnKeyListener(new View.OnKeyListener() 
     { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       if(keyCode == KeyEvent.KEYCODE_BACK) 
       { 

        cancelCountDownTimerAndSaveValues(); 

        if (Constants.Fragments.CurrentFragment != null) 
        { 
         getActivity().getSupportFragmentManager().popBackStack(); 

        } 

        return true; 
       } 
       return false; 
      } 
     }); 
    } 

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

View view = inflater.inflate(R.layout.xxxxx, container, false);