如何在Android的SettingsActivity中进行密码更改提示确认?
How to make password change prompt confirmation in SettingsActivity for Android?
我在 Android Studio 中有一个设置 Activity 和一个密码列表项,单击该项时会提示 EditTextPreference
对话,其中包含 InputType
密码。我怎样才能做到当用户输入密码时,弹出另一个对话框要求用户确认密码更改。
或者更好的是,如何在同一个对话框中使 EditTextPreference
多行并提示输入旧密码、新密码、确认新密码?
我在主 activity 的 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.
我创建了一个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();
使用对象引用 oldPass
和 newPass
检查密码。
如果您想在上面添加更多对象,只需创建并添加到视图即可。
为了解决当我在这个新对话框中取消或按是时,旧对话框会出现的问题,我将 "EditTextPreference" 简单地更改为 "Preference" pref_general.xml 文件。现在旧对话不出现或根本不出现,问题已解决。
我在 Android Studio 中有一个设置 Activity 和一个密码列表项,单击该项时会提示 EditTextPreference
对话,其中包含 InputType
密码。我怎样才能做到当用户输入密码时,弹出另一个对话框要求用户确认密码更改。
或者更好的是,如何在同一个对话框中使 EditTextPreference
多行并提示输入旧密码、新密码、确认新密码?
我在主 activity 的 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.
我创建了一个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();
使用对象引用 oldPass
和 newPass
检查密码。
如果您想在上面添加更多对象,只需创建并添加到视图即可。
为了解决当我在这个新对话框中取消或按是时,旧对话框会出现的问题,我将 "EditTextPreference" 简单地更改为 "Preference" pref_general.xml 文件。现在旧对话不出现或根本不出现,问题已解决。