Установить пароль при повторном нажатии

Я последовал за это, чтобы запросить пароль при оповещении

Итак, я дал это на спину, но это не работает

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

но он не работает onBackPressed, он возвращается или выходит из приложения ...

how ever its works fine with onBackPressed alert

@Override
public void onBackPressed() {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("Do You Want to Exit ?");
    alertDialogBuilder
            .setMessage("Click Yes to Exit!")
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            moveTaskToBack(true);
                            android.os.Process.killProcess(android.os.Process.myPid());
                            System.exit(0);
                        }
                    })

            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    AlertDialog alertDialog = alertDialogBuilder.create();
    alertDialog.show();
}

But I want Prompt Password onBackPressed

Может ли кто-нибудь помочь мне, что не так с onBackPressed для пароля?

2
0
100
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это :

     @Override
    public void onBackPressed() {
        if (isFirsttym) {
            super.onBackPressed();
            return;
        }

//        this.isFirsttym = true;
        showDialog();

//        new Handler().postDelayed(new Runnable() {
//
//            @Override
//            public void run() {
//                isFirsttym=false;
//            }
//        }, 5000);
    }


    public void showDialog()
    {

        LayoutInflater li = LayoutInflater.from(this);
        View promptsView = li.inflate(R.layout.cust_dialog, null);
        final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setView(promptsView);

        final EditText userInput = (EditText) promptsView
                .findViewById(R.id.user_input);


        // set dialog message
        alertDialogBuilder
                .setCancelable(false)
                .setNegativeButton("Go",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                /** DO THE METHOD HERE WHEN PROCEED IS CLICKED*/
                                String user_text = (userInput.getText()).toString();

                                /** CHECK FOR USER'S INPUT **/
                                if (user_text.equals("oeg"))
                                {
                                    Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)");
//                                    Search_Tips(user_text);
                                    isFirsttym=true;

                                }
                                else{
                                    Log.d(user_text,"string is empty");
                                    String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!";
                                    AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this);
                                    builder.setTitle("Error");
                                    builder.setMessage(message);
                                    builder.setPositiveButton("Cancel", null);
                                    builder.setNegativeButton("Retry", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int id) {
                                            showDialog();
                                            isFirsttym=false;

                                        }
                                    });
                                    builder.create().show();

                                }
                            }
                        })
                .setPositiveButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,int id) {
                                dialog.dismiss();
                                isFirsttym=false;
                            }

                        }

                );

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();

    }

Спасибо за ответ пользователя @ Vishva Dava ... Но при нажатии на спину тоже не работает.

Whats Going On 10.03.2018 06:30

@MLN Он отлично работает на моем устройстве. можешь попробовать на другом девайсе. а также измените время на 5000, установив 2000

Vishva Dave 10.03.2018 06:37

на самом деле на спине нажал выход из приложения, другого выхода нет .. только пустой или нормальный экран на спине.

Whats Going On 10.03.2018 06:39

@MLN Я обновил ответ с помощью диалогового метода, который я использовал для теста. просто проверьте это. Возможно, в вашем методе диалога есть ошибка

Vishva Dave 10.03.2018 06:40

Я не знаю, почему, если я скопирую Вставьте ваш код, он показывает предупреждение ... Но он не работает из-за неправильного пароля, он выходит ... Если я передаю свой код в showDialog (), он даже не работает ... Но ваш код показывает предупреждение но после неправильного ввода также и его выход ... (я удалил строки комментариев в вашем коде)

Whats Going On 10.03.2018 06:51

@MLN Что вы хотите сделать с неправильным паролем? нам нужно сделать логику для этого :(

Vishva Dave 10.03.2018 06:52

@MLN мы можем попробовать кое-что с этой логической переменной. удалите обработчик из backpressed .. и просто сделайте его ложным в диалоговом окне. Пытаюсь сделать демо. но до тех пор просто попробуйте это один раз

Vishva Dave 10.03.2018 06:55

То же самое, но я обнаружил, где проблема ... если я верну его отображение предупреждения ... хорошо ... Если я нажму "Отмена" ... и верну его выход .. Он также работает с неправильным паролем ...

Whats Going On 10.03.2018 07:07

@MLN Проверьте, что я обновился. я изменил false при нажатии кнопки отмены

Vishva Dave 10.03.2018 07:08

На самом деле я получаю эту ошибку android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application в строке builder.create().show(); ... Я думал, что приложение закрывается, но здесь происходит сбой ..

Whats Going On 10.03.2018 07:13

Нет По-прежнему то же самое с MianActivity.this, getApplicationContext (), this .. но по-прежнему то же самое

Whats Going On 10.03.2018 07:27

@MLN Я не получаю эту ошибку с этим кодом. Можете ли вы очистить перестроить проект

Vishva Dave 10.03.2018 07:33

user @ Vishva Dave, ваш ответ тоже работает .. Но мне нужно добавить fishis(); при условии, если .. Я поддержу ваш другой ответ

Whats Going On 10.03.2018 07:42

@MLN Ничего страшного, я рад, что твоя проблема решена. Рад помочь :)

Vishva Dave 10.03.2018 07:42
Ответ принят как подходящий

Привет, однажды попробуй, это сработало для меня ...

Прямое оповещение вместо макета

@Override
public void onBackPressed() {

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Title");
    alert.setMessage("Message");

    final EditText input = new EditText(this);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            String value = input.getText().toString();
            // Do something with value!


            /** CHECK FOR USER'S INPUT **/
            if (value.equals("oeg"))
            {
                                /*Log.d(input, "HELLO THIS IS THE MESSAGE CAUGHT :)");
                                Search_Tips(input);*/
                finish();

            }
            else{
                //Log.d(input,"string is empty");
                String message = "The password you have entered is incorrect." + " \n \n" + "Please try again!";
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Error");
                builder.setMessage(message);
                builder.setPositiveButton("Cancel", null);
                /*builder.setNegativeButton("Retry", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        //showDialog();
                    }
                });*/
                builder.create().show();

            }
        }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // Canceled.
        }
    });

    alert.show();

}

Другие вопросы по теме