复选框只能工作一次?
Check box only works once?
在我的 Android 应用程序中有一个密码 editText,它通常显示点而不是字母,在它下面有一个标记为显示密码的复选框。第一次选中该复选框时,密码会显示,但如果未选中,则不会重新隐藏。我将状态从开始时隐藏切换为开始时显示,第一次取消选中复选框会隐藏,但随后的点击不会取消隐藏。唯一涉及的代码是:
public void chkShowKey_click ( View v ) {
if ( showKey.isChecked ( ) ) {
txtPassKey.setInputType ( 144 );
} else {
txtPassKey.setInputType ( 128 );
}
}
怎么了?在 if 语句检查值之前 isChecked()
没有改变吗?
当我尝试时:
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { //NOW USE THE BOOLEAN TO CHECK IF CHECKED } } );
我得到
和
使用此代码进一步测试
chkShowKey.setOnCheckedChangeListener ( new CompoundButton.OnCheckedChangeListener ( ) {
@Override
public void onCheckedChanged ( CompoundButton buttonView, boolean isChecked ) {
if ( isChecked ) {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_NORMAL );
FancyToast.makeText(MainActivity.this,"Show",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
} else {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
FancyToast.makeText(MainActivity.this,"Hide",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
//FancyToast.makeText(MainActivity.this,"Checkbox changed!",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
}
);
显示事件正在触发并且 isChecked
正在更改,一切正常,除了 txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
您可以简单地设置一个 setOnCheckedChangeListener 然后检查是否在点击事件中检查并相应地处理 editText
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
//NOW USE THE BOOLEAN TO CHECK IF CHECKED
}
}
);
如果您尝试显示和隐藏密码,请按照以下步骤操作
要显示或隐藏点而不是密码,请设置 PasswordTransformationMethod:
yourEditText.setTransformationMethod(new PasswordTransformationMethod());
当然,您可以在 xml 布局中的 edittext 元素中使用
默认设置此项
android:password
要重新显示可读密码,只需将 null 作为转换方法:
yourEditText.setTransformationMethod(null);
根据您的要求尝试以下代码。只需根据您的复选框 ID 进行更改即可。
复选框事件
public void onCheckboxClicked(View view) {
boolean checked = ((CheckBox) view).isChecked();
switch(view.getId()) {
case R.id.chk1:
if (checked)
{System.out.println("if Part);}
else
{System.out.println("Else Part);}
break;
Perform your logic
}
}
在我的 Android 应用程序中有一个密码 editText,它通常显示点而不是字母,在它下面有一个标记为显示密码的复选框。第一次选中该复选框时,密码会显示,但如果未选中,则不会重新隐藏。我将状态从开始时隐藏切换为开始时显示,第一次取消选中复选框会隐藏,但随后的点击不会取消隐藏。唯一涉及的代码是:
public void chkShowKey_click ( View v ) {
if ( showKey.isChecked ( ) ) {
txtPassKey.setInputType ( 144 );
} else {
txtPassKey.setInputType ( 128 );
}
}
怎么了?在 if 语句检查值之前 isChecked()
没有改变吗?
当我尝试时:
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { //NOW USE THE BOOLEAN TO CHECK IF CHECKED } } );
我得到
和
使用此代码进一步测试
chkShowKey.setOnCheckedChangeListener ( new CompoundButton.OnCheckedChangeListener ( ) {
@Override
public void onCheckedChanged ( CompoundButton buttonView, boolean isChecked ) {
if ( isChecked ) {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_NORMAL );
FancyToast.makeText(MainActivity.this,"Show",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
} else {
txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
FancyToast.makeText(MainActivity.this,"Hide",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
//FancyToast.makeText(MainActivity.this,"Checkbox changed!",FancyToast.CONFUSING,FancyToast.LENGTH_SHORT,false).show();
}
}
);
显示事件正在触发并且 isChecked
正在更改,一切正常,除了 txtPassKey.setInputType ( InputType.TYPE_TEXT_VARIATION_PASSWORD );
您可以简单地设置一个 setOnCheckedChangeListener 然后检查是否在点击事件中检查并相应地处理 editText
YourCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
//NOW USE THE BOOLEAN TO CHECK IF CHECKED
}
}
);
如果您尝试显示和隐藏密码,请按照以下步骤操作
要显示或隐藏点而不是密码,请设置 PasswordTransformationMethod:
yourEditText.setTransformationMethod(new PasswordTransformationMethod());
当然,您可以在 xml 布局中的 edittext 元素中使用
默认设置此项android:password
要重新显示可读密码,只需将 null 作为转换方法:
yourEditText.setTransformationMethod(null);
根据您的要求尝试以下代码。只需根据您的复选框 ID 进行更改即可。
复选框事件
public void onCheckboxClicked(View view) {
boolean checked = ((CheckBox) view).isChecked();
switch(view.getId()) {
case R.id.chk1:
if (checked)
{System.out.println("if Part);}
else
{System.out.println("Else Part);}
break;
Perform your logic
}
}