2013-07-19 5 views
8

Ich möchte zurück Schaltfläche in Fragment-Klasse deaktivieren. onBackpressed kann nicht in fragment.how funktionieren, um die Zurück-Schaltfläche zu deaktivieren? .. das ist mein einfacher Code.Wie zu deaktivieren Taste gedrückt in android Fragment Klasse

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

für Fragment popbackstack() -Methode wird verwendet .. –

Antwort

12

Sie haben onBackPressed von Eltern FragmentActivity Klasse außer Kraft zu setzen. Setzen Sie daher Ihre Codes in Parent FragmentActivity. Oder Sie können diese Eltern-Methode aufrufen, indem Sie:

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

in FragmentActivity Überschreibung onBackPressed Methode und nicht seine Superklasse Ruftaste deaktivieren zurück.

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

es funktioniert gut thankyou – JellyBean

3

ändern

public void onBackPressed() { 
    } 

zu

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

ODER

@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 Ihren Eltern Aktivität

@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

In Ihrem oncreateView() -Methode müssen Sie diesen Code schreiben und in KEYCODE_BACk Rückkehr sollte wahr, dann wird es die Zurück-Taste Option für bestimmtes Fragment stoppen

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