Запрос пароля приходит только в первый раз

Я хочу, когда пользователь нажимает кнопку удаления, там появляется диалоговое окно с паролем. Этот диалог приходит только один раз. Я использую этот код:

public void run() {

        Looper.prepare();

        while (!exit) {

            // get the info from the currently running task
            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(MAX_PRIORITY);
            String activityName = taskInfo.get(0).topActivity.getClassName();
            Log.d("topActivity", "CURRENT Activity ::" + activityName);

            if (activityName.equals("com.android.packageinstaller.UninstallerActivity")) {
                //Toast.makeText(context, "Uninstall Clicked", Toast.LENGTH_LONG).show();
                Intent startIntent = new Intent(this.context, Alert_Dialog.class);
                startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               this.context.startActivity(startIntent);
                exit = true;
            } else if (activityName.equals("com.android.settings.ManageApplications")) {
                Toast.makeText(this.context, "Back", Toast.LENGTH_LONG).show();
                exit = true;
            }
        }
        Looper.loop();
    }//Run

Я хочу, чтобы каждый раз, когда пользователь нажимал на Unistall Prompt, приходил код ниже в onClick,

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);   alertDialogBuilder.setView(promptsView);
        final EditText userInput = (EditText) promptsView.findViewById(R.id.edit_text);

        alertDialogBuilder
                .setCancelable(false)
                .setNegativeButton("OK",
                        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("abc"))
                                {
                                    Log.d(user_text, "HELLO THIS IS THE MESSAGE CAUGHT :)");
                                    Toast.makeText(myContext,"PAssword Correct",Toast.LENGTH_LONG).show();
                                    Alert_Dialog.this.finish();
                                    //Search_Tips(user_text);

                                }
                                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(myContext);
                                    builder.setTitle("Error");
                                    builder.setMessage(message);
                                    builder.setPositiveButton("Cancel", null);
                                    builder.create().show();
                                    Alert_Dialog.this.finish();

                                }
                            }
                        });
//                .setPositiveButton("Cancel",
//                        new DialogInterface.OnClickListener() {
//                            public void onClick(DialogInterface dialog,int id) {
//                                Alert_Dialog.this.finish();
//
//                            }
//
//                        }
//                );
        AlertDialog alert = alertDialogBuilder.create();
        alert.show();
    }

1 ответ

Как только диалог вызывает dismiss() вид, который вы установили для диалога, также будет уничтожен.

В вашем случае эта строка задает вид,

alertDialogBuilder.setView(promptsView);

Но когда диалог закрыт, вид promptsView уничтожен,

promptsView должен быть воссоздан еще раз, вы используете его.

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
promptsView = new PromptsView();//new or inflate the view
//....
alertDialogBuilder.setView(promptsView);
Другие вопросы по тегам