Prompt user when Back button is pressed

前端 未结 5 1021
孤街浪徒
孤街浪徒 2021-02-13 16:01

Which is the good place to ask user, whether (s)he wants to exit the app when (s)he clicked the back button? I considered the onPause and onStop, but t

5条回答
  •  面向向阳花
    2021-02-13 16:23

    Ask for user's permission to close the app.

    You can do it in the following way;

    /**
     * Exit the app if user select yes.
     */
    private void doExit() {
    
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                AppDemoActivity.this);
    
        alertDialog.setPositiveButton("Yes", new OnClickListener() {
    
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
    
        alertDialog.setNegativeButton("No", null);
    
        alertDialog.setMessage("Do you want to exit?");
        alertDialog.setTitle("AppTitle");
        alertDialog.show();
    }
    

    Which is the good place to ask user, whether (s)he wants to exit the app when (s)he clicked the back button?

    Since, you want to prompt user when (s)he clicked the back hard button, as suggested by others, you can override the onBackPressed() method and call the above method from there;

    @Override
    public void onBackPressed() {
    
        doExit();
    }
    

    As suggested by @Martyn, you can use the onKeyDown to achieve the same;

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    
        if(keyCode == KeyEvent.KEYCODE_BACK) {
            doExit();
        }
    
        return super.onKeyDown(keyCode, event);
    }
    

    The app should also ask if user is trying to exit the app from a button (in app itself), not the Back hard key.

    For this, call the doExit() from your button's onClick;

    Button exitButton = (Button)findViewById(R.id.exitButton);
    exitButton.setOnClickListener(new android.view.View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
            doExit();
        }
    });
    


    Related Info:

    • Implementing effective navigation

提交回复
热议问题