Unable to display alert dialog on physical back key press event in device android 4.2.2

StackOverflow https://stackoverflow.com/questions/21316258

  •  01-10-2022
  •  | 
  •  

سؤال

I am able get back key on backpressed, but unable to show alert dialog dialog in key.

 @Override
    public void onBackPressed() {
        super.onBackPressed();
        new AlertDialog.Builder(LoginActivity.this)
            .setIcon(android.R.drawable.ic_dialog_alert)
            .setTitle("Exit")
            .setMessage("Are you want to exit from application?")
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
//                  finish();    
                }
            })
            .setNegativeButton("No", null)
            .show();
//      moveTaskToBack(true);
    }

Log:-

01-23 23:41:53.461: E/WindowManager(10905): Activity com.apps.savvyshopper.login.LoginActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41f767f8 V.E..... R.....I. 0,0-513,299} that was originally added here
01-23 23:41:53.461: E/WindowManager(10905): android.view.WindowLeaked: Activity com.apps.savvyshopper.login.LoginActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{41f767f8 V.E..... R.....I. 0,0-513,299} that was originally added here
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:409)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:218)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
01-23 23:41:53.461: E/WindowManager(10905):     at android.app.Dialog.show(Dialog.java:281)
01-23 23:41:53.461: E/WindowManager(10905):     at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
01-23 23:41:53.461: E/WindowManager(10905):     at com.apps.savvyshopper.login.LoginActivity.onBackPressed(LoginActivity.java:275)
01-23 23:41:53.461: E/WindowManager(10905):     at android.app.Activity.onKeyUp(Activity.java:2156)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.KeyEvent.dispatch(KeyEvent.java:2637)
01-23 23:41:53.461: E/WindowManager(10905):     at android.app.Activity.dispatchKeyEvent(Activity.java:2393)
01-23 23:41:53.461: E/WindowManager(10905):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1871)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4118)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4061)
01-23 23:41:53.461: E/WindowManager(10905):     at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3144)
01-23 23:41:53.461: E/WindowManager(10905):     at android.os.Handler.dispatchMessage(Handler.java:107)
01-23 23:41:53.461: E/WindowManager(10905):     at android.os.Looper.loop(Looper.java:194)
01-23 23:41:53.461: E/WindowManager(10905):     at android.app.ActivityThread.main(ActivityThread.java:5371)
01-23 23:41:53.461: E/WindowManager(10905):     at java.lang.reflect.Method.invokeNative(Native Method)
01-23 23:41:53.461: E/WindowManager(10905):     at java.lang.reflect.Method.invoke(Method.java:525)
01-23 23:41:53.461: E/WindowManager(10905):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
01-23 23:41:53.461: E/WindowManager(10905):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-23 23:41:53.461: E/WindowManager(10905):     at dalvik.system.NativeStart.main(Native Method)

If anyone have idea please reply.Thanks in advance..

هل كانت مفيدة؟

المحلول

Please comment this line in your public void onBackPressed() Method, and it should work fine.
super.onBackPressed();

Also add .create() on your AlertDialog before calling .show() :

new AlertDialog.Builder(LoginActivity.this)
        .setIcon(android.R.drawable.ic_dialog_alert)
        .setTitle("Exit")
        .setMessage("Are you want to exit from application?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
//                  finish();    
            }
        })
        .setNegativeButton("No", null)
        .create()
        .show();

I hope this helps.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top