2013-07-19 14 views
8

Voglio disattivare il pulsante Indietro nella classe frammento. onBackpressed non può funzionare in fragment.how per disabilitare il pulsante Indietro? .. questo è il mio semplice codice.Come disabilitare il pulsante Indietro premuto nella classe frammento Android

public class Login extends Fragment { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     ,Bundle savedInstanceState) { 
      ViewGroup root = (ViewGroup) inflater.inflate(R.layout.login, null); 
      return root; 
      } 
      public void onBackPressed() { 
    } 
} 
+0

per il metodo popback popbackstack() viene utilizzato .. –

risposta

12

Devi eseguire l'override onBackPressed di classe genitrice FragmentActivity. Pertanto, inserisci i tuoi codici in Parent FragmentActivity. Oppure si può chiamare il metodo di padre utilizzando questo:

public void callParentMethod(){ 
    getActivity().onBackPressed(); 
} 

in sostituzione FragmentActivity onBackPressed metodo e non chiamare sua classe super per disabilitare il tasto indietro.

@Override 
public void onBackPressed() { 
    //super.onBackPressed(); 
    //create a dialog to ask yes no question whether or not the user wants to exit 
    ... 
} 
+0

funziona bene grazie – JellyBean

3

Change

public void onBackPressed() { 
    } 

a

@Override 
public void onBackPressed() { 
super.onBackPressed() 
    } 

O

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

     } 
     return super.onKeyDown(keyCode, event);  
    } 
3
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 

    onBackPressed(); 
} 

return super.onKeyDown(keyCode, event); 
} 
@Override 
public void onBackPressed() { 

return; 
} 
1

In un genitore Attività

@Override 
public void onBackPressed() { 

    Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame); 
    if (f instanceof yourfragment) {//the fragment on which you want to handle your back press 
     Log.i("BACK PRESSED", "BACK PRESSED"); 
    }else{ 
     super.onBackPressed(); 
    } 
} 
2

nel metodo oncreateView() è necessario scrivere il codice e, in cambio KEYCODE_BACk dovrebbe vero allora si fermerà l'opzione pulsante indietro per frammento particolare

 View v = inflater.inflate(R.layout.xyz, container, false); 
    //Back pressed Logic for fragment 
    v.setFocusableInTouchMode(true); 
    v.requestFocus(); 
    v.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 

       return true; 
      } 
     } 
     return false; 
    } 
}); 
Problemi correlati