2016-08-09 62 views
1

Das ist mein KlassennameWie behandelt onBackPressed() in Fragment?

public class PrimaryFragment extends Fragment implements OnRestartRequest { 

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

Fehler auf dieser Linie: super.onBackPressed();

Ich weiß nicht, was das Problem ist in auf der Rückseite gedrückte Taste fragment Klasse.

+1

prüfen erhalten diese post- http://stackoverflow.com/questions/5448653/how-to-implement-onbackpressed-in-android-fragments?rq=1 –

+1

Bitte lesen Sie sorgfältig http://StackOverflow.com/Help/how-to-ask – Bobby

+0

Lesen Sie den Fehler Nachrichten hätten dir geholfen. :) – Sufian

Antwort

2

Es gibt keine onBackPressed() -Methode in Fragment. Sie können etwas wie getActivity() onBackPressed() von Ihrem Fragment aufrufen.

0

Fragmetns hat keine eigene OnBackPressed und Sie müssen ihre Transaktion von seiner übergeordneten Actvitiy behandeln, die dieses Fragment enthält.

Beispiel: // in Parent Aktivität auf 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

sollten Sie getActivity() Anruf von innen mögen Sie dieses Fragment:

getActivity().onBackedPressed(); 

Hinweis: beobachten, dass Sie die richtige getActivity() importieren, wenn Sie Verwenden Sie android.support.v4.app.Fragment Sie müssen das richtige Paket importieren.

1

Fragment hat nicht onBackPress() Methode wie wir für die Aktivität haben. Ich ziehe Handhabung zurück drücken Code unten verwenden, hoffen, dass es Ihnen helfen:

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; 
      } 
     }); 
    } 

und hier Ansicht ist Ihr Hauptansicht für Fragment, wie Sie von

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