Что вызывает onBackPress во фрагменте
Во фрагменте у меня есть это:
onPause(){
super.onPause();
if(flag){
getActivity.finish();
}else{
}
}
onResume(){
flag = true;
super.onResume();
}
и есть кнопка, на клик я установил этот флаг в ложь:
Button.onClick{
flag = false;
}
Идея заключается в следующем:
когда кнопка нажата, не заканчивайте это действие. Но когда устройство BackButton нажата, готово ().
Но эта логика не работает. Причина в том, что когда я нажимаю кнопку BackButton устройства, onPause не вызывается.
Это 4-й фрагмент в деятельности. Поэтому, когда я нажимаю кнопку BackButton, я вижу третий фрагмент. Что я не хочу.
Я использую это на устройстве API 10, но мое приложение использует библиотеку поддержки v4.
Благодарю вас.
2 ответа
Если вы хотите закрыть задание, нажмите "Назад", затем onBackPressed
внутри деятельности следующим образом:
public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentByTag("yourfragment");
if (fragment instanceOf YourFragmet) {
finish();
return;
}
super.onBackPressed();
}
Если вы хотите закрыть действие по нажатию кнопки, то вы можете позвонить
Button.onClick{
getActivity().onBackPressed();
}
ИЛИ ЖЕ
Button.onClick{
getActivity().finish();
}
Если при переходе между фрагментами вы вызываете addToBackStack() как часть вашей FragmentTransaction, тогда кнопка "Назад" перенесет вас к фрагменту в верхней части заднего стека.
Почему вы не можете использовать onDetach() Fragment? При нажатой клавише Back для фрагмента будет вызвано onDetach(), чтобы удалить это.
@Override
public void onDetach() {
super.onDetach();
if(flag){
getActivity.finish();
}else{
}
}