Как отключить кнопку «Назад», нажатой в классе фрагментов андроида

Я хочу отключить кнопку возврата в классе фрагментов. OnBackpressed не работает в фрагменте. Как отключить кнопку «Назад»? Это мой простой код.

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() { } } 

Solutions Collecting From Web of "Как отключить кнопку «Назад», нажатой в классе фрагментов андроида"

Вы должны переопределить onBackPressed из родительского класса FragmentActivity. Поэтому поместите свои коды в родительский FragmentActivity. Или вы можете вызвать метод родителя, используя это:

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

В FragmentActivity переопределите метод onBackPressed и не вызывайте его суперкласс для отключения кнопки возврата.

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

+ Изменить

 public void onBackPressed() { } 

в

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

ИЛИ

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { } return super.onKeyDown(keyCode, event); } 
 @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; } 

В вашей родительской деятельности

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

В вашем методе oncreateView () вам нужно написать этот код, а в KEYCODE_BACk return будет true, то он остановит опцию back button для определенного фрагмента

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