Я создаю MainActivity. В этом действии есть кнопка для открытия фрагмента, а во фрагменте есть кнопка для открытия диалогового окна нижнего листа.
Когда я нахожусь на фрагменте, я могу нажать кнопку «Назад», чтобы вернуться в MainActivity. Однако, когда я уже открыл нижнее диалоговое окно, я хочу отключить кнопку «Назад», чтобы пользователь не мог нажимать кнопку «Назад», когда отображается нижнее диалоговое окно. Так как я могу это сделать? Спасибо.
Основная деятельность
public class MainActivity extends SdwBaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startAction(View view){
LoadCashTutorialScreen loadCashTutorialScreen = LoadCashTutorialScreen.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.container, loadCashTutorialScreen, "LoadCashTutorialScreen").addToBackStack("LoadCashTutorialScreen").commit();
}
@Override
public void onBackPressed(){
super.onBackPressed()
//do something so that the back button is disable when the Bottom Dialog is showing
}
}
Фрагмент:
public class LoadCashTutorialScreen extends Fragment{
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = initView(inflater, container, R.layout.load_cash_tutorial_screen);
Button startDialog = view.findViewById(R.id.dialogButton);
startDialog.setOnClickListener(view1 -> {
MyBottomDialog dialog = new MyBottomDialog();
dialog.show(activity.getSupportFragmentManager(), "BottomDialog");
});
return view;
}
}
Диалог:
public class MyBottomDialog extends BottomSheetDialogFragment {
@Override
public void setupDialog(@NonNull Dialog dialog, int style) {
super.setupDialog(dialog, style);
View contentView = View.inflate(getContext(), R.layout.load_cash_bottom_dialog, null);
dialog.setContentView(contentView);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
}
}
Примечание. Раньше я писал некоторые методы для onBackPressed (), чтобы предотвратить исчезновение диалогового окна, однако диалоговое окно всегда исчезает при нажатии кнопки «Назад». После отладки я понимаю, что onBackPressed () не достигается, когда отображается нижний диалог. Я не знаю почему.