インターネットが接続されているかどうかを確認するボトムシートがあります!接続されていない場合はボトムシートが表示され、そうでない場合はボトムシートが消えます。関数を使用bottomSheetDialog.dismiss();
して、ユーザーが画面を押してボトムシートを非表示にできないようにしました。今私が欲しいのは、ユーザーがボトムシートがアプリを終了したときに押し戻すことです。
最初にbottcheetを終了してからアプリを終了しないでください
これが私がこれまでに作ったものです
IOnBackPressedというインターフェイスを使用し、このコードで「MainActivty」から終了アプリをオーバーライドします
@Override
public void onBackPressed() {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_layout);
if (!(fragment instanceof IOnBackPressed)) {
super.onBackPressed();
}
}
そして、ボトムシート「HomeFragment」を持つフラグメントに exit app メソッドを追加しました
@Override
public boolean onBackPressed() {
bottomSheetDialog.dismiss();
requireActivity().moveTaskToBack(true); //exit the app when press back
requireActivity().finish();
return true;
}
しかし、それは機能しておらず、押し戻してもアプリが終了しません。
これがボトムシートダイアログの私の方法です
private void showBottomSheetDialog() {
bottomSheetDialog = new BottomSheetDialog(requireContext());
bottomSheetDialog.setContentView(R.layout.bottomsheet_no_internet);
if (CheckNetwork.isInternetAvailable(requireActivity())) {
bottomSheetDialog.dismiss();
} else {
bottomSheetDialog.setCancelable(false);
bottomSheetDialog.show();
}
Button buttonNoInternet = bottomSheetDialog.findViewById(R.id.buttonNoInternet);
assert buttonNoInternet != null;
buttonNoInternet.setOnClickListener(v -> {
if (CheckNetwork.isInternetAvailable(requireActivity())) {
adapter.notifyDataSetChanged();
bottomSheetDialog.dismiss();
} else {
bottomSheetDialog.dismiss();
adapter.notifyDataSetChanged();
bottomSheetDialog.show();
}
});
}
では、どうすればそれを行うことができますか?