首页 > 解决方案 > 我的 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);
        }
    }

}

标签: javaandroidcheckbox

解决方案


您的代码对我来说运行良好,没有任何问题,您也可以尝试此解决方案

替换此代码

checkBoxVisibility.setOnClickListener(v -> {

   boolean isChecked1 = ((CheckBox)v).isChecked();
   updateTextVisibility(isChecked1);

});

通过这段代码

 checkBoxVisibility.setOnCheckedChangeListener((buttonView, isChecked) -> {
            updateTextVisibility(isChecked);
        });

推荐阅读