Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android设置活动中进行密码更改提示确认?_Java_Android_Edittextpreference - Fatal编程技术网

Java 如何在Android设置活动中进行密码更改提示确认?

Java 如何在Android设置活动中进行密码更改提示确认?,java,android,edittextpreference,Java,Android,Edittextpreference,我在Android Studio中有一个设置活动和一个密码列表项,当单击该项时,会提示一个带有InputType密码的EditTextPreference对话框。我如何使它在用户输入密码时,弹出另一个对话框,要求用户确认密码更改 或者更好的是,如何在同一对话框中设置EditTextPreference多行并提示输入旧密码、新密码、确认新密码 我在主要活动的onCreate中添加了以下内容 ListView lv; Context ctx=this; onCreate() { lv = g

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

或者更好的是,如何在同一对话框中设置
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();
            }
        }
    });
}
ListView-lv;
上下文ctx=此;
onCreate(){
lv=getListView();
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==1){
AlertDialog.Builder AlertDialog=新建AlertDialog.Builder(ctx);
alertDialog.setTitle(“值”);
最终编辑文本oldPass=新编辑文本(ctx);
最终编辑文本newPass=新编辑文本(ctx);
最终编辑文本确认过程=新编辑文本(ctx);
setTransformationMethod(PasswordTransformationMethod.getInstance());
setTransformationMethod(PasswordTransformationMethod.getInstance());
confirmPass.setTransformationMethod(PasswordTransformationMethod.getInstance());
LinearLayout ll=新的LinearLayout(ctx);
ll.设置方向(线性布局、垂直);
ll.addView(oldPass);
ll.addView(newPass);
ll.addView(confirmPass);
alertDialog.setView(ll);
alertDialog.setPositiveButton(“是”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
alertDialog.setNegativeButton(“否”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
AlertDialog alert11=AlertDialog.create();
alert11.show();
}
}
});
}

但应用程序的行为没有改变。我关注的列表项是从顶部算起的第二个列表项,因此大概位置==1。

我创建了一个
线性布局,并在其中添加了两个
文本框
,然后将其交给
警报框

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();
使用对象引用检查密码
oldPass
newPass

如果要向其添加更多对象,只需创建并添加到视图中即可


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

因此,对于此解决方案,我是否必须覆盖设置列表视图的侦听器以启动此对话,而不是给定的默认对话?是,您可以随时使用。在
onItemClickListener
中,从
Listitem
获取密码并将其设置为oldPassword(旧密码)。如果需要,请显示对话框OK I'm trying out(确定我正在尝试)。android studio为设置活动提供的模板甚至不包括明确的侦听器,我猜(可能是错误的),所以我必须自己写出来。好的,谢谢,我让它工作起来了,但是当我按“否”时,旧的对话会弹出,尽管我在单击侦听器之前已经(at)重写了。当我添加代码来替换dialog.cancel()时,这会被忽略吗?还是有一种方法可以完全覆盖原始对话框?