如何在java中进行react.js之类的实时值更改

e0uiprwp  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(297)

我已经习惯了 React.js 6个月,开始为我的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)会导致我的应用程序在启动时冻结。

zd287kbt

zd287kbt1#

你可以使用 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());
            }
        });

    }
}

只用于切换布尔值以测试它的按钮

相关问题