Android 更改“切换到正确密码”的状态并关闭对话框
在我的应用程序中,如果密码正确,我需要关闭开关,否则它应该始终打开。 我正在显示一个对话框,用于在setOnCheckedChangeListener上询问密码, 如果密码正确,则更改切换状态 我的问题是 一旦切换更改其状态,它将再次显示对话框。 如果密码正确,对话框应关闭,同时切换状态应更改为关闭。 如何解决这个问题 我的代码:Android 更改“切换到正确密码”的状态并关闭对话框,android,Android,在我的应用程序中,如果密码正确,我需要关闭开关,否则它应该始终打开。 我正在显示一个对话框,用于在setOnCheckedChangeListener上询问密码, 如果密码正确,则更改切换状态 我的问题是 一旦切换更改其状态,它将再次显示对话框。 如果密码正确,对话框应关闭,同时切换状态应更改为关闭。 如何解决这个问题 我的代码: onOffSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
onOffSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
if(isCorrectPin)
{
onOffSwitch.setChecked(false);
}
Log.v("Switch State=", ""+isChecked);
if(isChecked)
{
//tv_switch_status.setText("");
}
else
{
displayPinAlert();
} }
});
private void displayPinAlert()
{
onOffSwitch.setChecked(true);
AlertDialog.Builder alert = new AlertDialog.Builder(activity.getParent());
alert.setMessage("Enter Pin");
// Set an EditText view to get user input
final EditText input = new EditText(activity.getParent());
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
String value = input.getText().toString();
//
onOffSwitch.setChecked(false);
// Do something with value!
if(value.equals("1234")) {
dialog.dismiss();
//onOffSwitch.setChecked(false);
isCorrectPin =true;
}
} });
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } });
alert.show();
}
将displayPinAlert更改为:
private void displayPinAlert()
{
onOffSwitch.setChecked(true);
AlertDialog.Builder alert = new AlertDialog.Builder(activity.getParent());
alert.setMessage("Enter Pin");
// Set an EditText view to get user input
final EditText input = new EditText(activity.getParent());
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
String value = input.getText().toString();
//
onOffSwitch.setChecked(false);
// Do something with value!
if(value.equals("1234")) {
dialog.dismiss();
onOffSwitch.setChecked(false);
}
} });
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // Canceled. } });
dialog = alert.show();
}
问题的原因是您取消了对话框的旧引用,而不是上次创建的引用。如果密码正确且代码不起作用,我想取消对话框,并将“切换”状态更改为“关闭”?崩溃?不,它正在工作,但如果密码正确,它会打开对话框OK,发布答案。它不工作,对话框被取消,但它会重新打开,因为它会更改切换状态使用布尔变量阻止SetOnCheckedChangeListener或将侦听器设置为null(SetOnChdCheckedChangeListener(null);)它将如何帮助,我尝试过使用布尔值,但不起作用。你能发布更新的代码吗?我认为这个问题是由我们给听众打电话引起的。