2

インターネットが接続されているかどうかを確認するボトムシートがあります!接続されていない場合はボトムシートが表示され、そうでない場合はボトムシートが消えます。関数を使用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();
        }
    });
}

では、どうすればそれを行うことができますか?

4

5 に答える 5

0

このコードで試してください

Intent i = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

また

System.exit(0);

また

finishAffinity();
finish();
于 2021-06-22T05:21:58.500 に答える