1

我在 Android Studio 中有一个设置活动和一个密码列表项,单击时会提示与密码EditTextPreference对话。InputType我怎样才能使当用户输入密码时,会弹出另一个对话框,要求用户确认密码更改。

或者更好的是,如何EditTextPreference在同一个对话框中制作多行并提示输入旧密码、新密码、确认新密码?

我在主要活动的 onCreate 中添加了以下内容

ListView lv;
Context ctx=this;

onCreate() {



lv = getListView();

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            if (position == 1) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(ctx);
                alertDialog.setTitle("Values");
                final EditText oldPass = new EditText(ctx);
                final EditText newPass = new EditText(ctx);
                final EditText confirmPass = new EditText(ctx);


                oldPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
                newPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
                confirmPass.setTransformationMethod(PasswordTransformationMethod.getInstance());


                LinearLayout ll = new LinearLayout(ctx);
                ll.setOrientation(LinearLayout.VERTICAL);

                ll.addView(oldPass);

                ll.addView(newPass);
                ll.addView(confirmPass);
                alertDialog.setView(ll);
                alertDialog.setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });
                alertDialog.setNegativeButton("No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

                AlertDialog alert11 = alertDialog.create();
                alert11.show();
            }
        }
    });
}

但是应用程序的行为没有变化。我关注的 listItem 是从顶部开始的第二个,所以大概位置 == 1。

4

1 回答 1

2

我创建了一个LinearLayout并添加了两个textBoxes,然后将其提供给alertBox.

AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle("Values");
final EditText oldPass = new EditText(MainActivity.this);
final EditText newPass = new EditText(MainActivity.this);
final EditText confirmPass = new EditText(MainActivity.this);


oldPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
newPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
confirmPass.setTransformationMethod(PasswordTransformationMethod.getInstance());

oldPass.setHint("Old Password");
newPass.setHint("New Password");
confirmPass.setHint("Confirm Password");
LinearLayout ll=new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.VERTICAL);

ll.addView(oldPass);

ll.addView(newPass);
ll.addView(confirmPass);         
alertDialog.setView(ll);
alertDialog.setPositiveButton("Yes",
        new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
    }
});
alertDialog.setNegativeButton("No",
        new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
    }
});

AlertDialog alert11 = alertDialog.create();
alert11.show();

使用对象引用检查密码oldPassnewPass.

如果您想在其上添加更多对象,只需创建并添加到视图中。

为了解决当我在这个新对话框中取消或按下是时会出现旧对话框的问题,我在我的 pref_general.xml 文件中将“EditTextPreference”更改为简单的“Preference”。现在旧对话根本没有出现或出现,问题已解决。

于 2015-06-12T05:26:48.230 回答