Я привык к React.js за 6 месяцев и начинаю разрабатывать приложение с нуля на Java для своего Android приложения.

В React.js все, что он делает, когда булево значение меняется с false на true:

this.state = {
    checkmarkChecked: false
}
if (this.state.checkmarkChecked) {
    //If the checkmarkChecked is true
    //TODO: show all checks
} else {
    //If the checkmarkChecked is false
    //TODO: hide all checks
}

Если checkmarkChecked был переключен на true, он вызывает true, чтобы показать.

Сейчас я новичок в Java для разработки Android, я попробовал один из этих вариантов:

//onCreate
while (true) {
    if (checkmarkChecked) {
        System.out.println("True");
    } else {
        System.out.println("False");
    }
}

На самом деле, while(true) вызывает зависание моего приложения при запуске.

aliamanuba

Ответов: 1

Ответы (1)

Вы можете использовать MutableLiveData, которая обертывает Boolean, и зарегистрировать активность для наблюдения за ней с помощью .observe().

Всякий раз, когда значение булевой величины изменяется, будет срабатывать обратный вызов onChanged() с новым значением булевой величины.

public class MainActivity extends AppCompatActivity {

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

        final MutableLiveData<Boolean> state = new MutableLiveData<>(false);

        state.observe(this, new Observer<Boolean>() {
            @Override
            public void onChanged(Boolean newValue) {
                if (newValue) {
                    Toast.makeText(MainActivity.this, "True", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(MainActivity.this, "False", Toast.LENGTH_SHORT).show();
                }
            }
        });

        Button myButton = findViewById(..);

        myButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                state.setValue(!state.getValue());
            }
        });

    }
}

Кнопка для переключения булевого значения для его проверки

2022 WebDevInsider