java - 我的 Android 示例上的复选框活动显示带有多个文本显示/隐藏选项的错误
问题描述
这可能是一个愚蠢的问题,但是当我尝试创建一个带有复选框的简单应用程序时,我感到震惊。当我使用复选框显示和隐藏单个文本时,效果很好。但如果是第二条短信,应用程序就会崩溃。我想隐藏一个文本并在单击复选框时显示另一个文本。
这是完整的代码:
MainActivity.Java
package ***
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView txtHelloWorld;
private TextView txtHelloWorldChecked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CheckBox checkBoxVisibility = findViewById(R.id.checkBox_visibility);
txtHelloWorld = findViewById(R.id.txtHelloWorld);
boolean isChecked = checkBoxVisibility.isChecked();
updateTextVisibility(isChecked);
checkBoxVisibility.setOnClickListener(v -> {
boolean isChecked1 = ((CheckBox)v).isChecked();
updateTextVisibility(isChecked1);
});
}
private void updateTextVisibility(boolean isChecked) {
if (isChecked) {
txtHelloWorld.setVisibility(View.VISIBLE);
txtHelloWorldChecked.setVisibility(View.INVISIBLE);
} else {
txtHelloWorld.setVisibility(View.INVISIBLE);
txtHelloWorldChecked.setVisibility(View.VISIBLE);
}
}
}
解决方案
您的代码对我来说运行良好,没有任何问题,您也可以尝试此解决方案
替换此代码
checkBoxVisibility.setOnClickListener(v -> {
boolean isChecked1 = ((CheckBox)v).isChecked();
updateTextVisibility(isChecked1);
});
通过这段代码
checkBoxVisibility.setOnCheckedChangeListener((buttonView, isChecked) -> {
updateTextVisibility(isChecked);
});