Как отключить кнопку возврата назад в классе фрагментов андроида
Я хочу отключить кнопку возврата в классе фрагмента. 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() {
}
}
Ответы
Ответ 1
Вы должны переопределить 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
...
}
Ответ 2
В вашем методе 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;
}
});
Ответ 3
В вашей родительской деятельности
@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();
}
}
Ответ 4
+ Изменить
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);
}
Ответ 5
@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;
}
Ответ 6
Я знаю это слишком поздно, Во фрагменте наСоздать
'''
val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
Log.d("tag","back button pressed") // Handle the back button event
}
callback.isEnabled
'''