在 Android Studio 中根据条件使约束布局不可见

Making Constraint Layout Invisible based on Condition in Android Studio

我正在使用一个条件,如果语句为真,它将使布局不可见或消失。 我有一个名为“courseLayout”的约束布局,我在 java 中调用此布局来执行此操作 ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout); 然后在 if 语句中,我使用 constraintLayout1.setVisibility(View.INVISIBLE); 它不起作用,应用程序因这些行而崩溃。还有其他方法可以调用和操作约束布局吗?我究竟做错了什么?这是 Java 代码。 if 语句适用于除此约束布局之外的其他元素。

     
  ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Calendar calendar = Calendar.getInstance();
        String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

    
        Calendar cal = Calendar.getInstance();
        int day = cal.get(Calendar.DAY_OF_WEEK);

        if(day==Calendar.FRIDAY){
        constraintLayout1.setVisibility(View.INVISIBLE);
}

ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);

您在 oncreate 方法之外初始化视图,这不是您需要在内部初始化视图的方式 onCreate()

这是正确答案:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ConstraintLayout constraintLayout1 = findViewById(R.id.courseLayout);

        Calendar calendar = Calendar.getInstance();
        String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

        Calendar cal = Calendar.getInstance();
        int day = cal.get(Calendar.DAY_OF_WEEK);

        if(day==Calendar.FRIDAY){
        constraintLayout1.setVisibility(View.INVISIBLE);

尝试在 onCreate()

中使用 findViewById
ConstraintLayout constraintLayout1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Calendar calendar = Calendar.getInstance();
    String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());


    Calendar cal = Calendar.getInstance();
    int day = cal.get(Calendar.DAY_OF_WEEK);

    if(day==Calendar.FRIDAY){
        constraintLayout1.setVisibility(View.INVISIBLE);
    }
}

顺便说一句,您忘记在 constraintLayout1.setVisibility 之后用 { } 结束条件语句(View.INVISIBLE);