javascript - 如何像 React.js 一样在 Java 中进行实时值更改

标签 javascript java android

我已经习惯了 React.js 6 个月,并开始从头开始为我的 Android 应用程序开发一个应用程序。

React.js 中,当 boolean 值从 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 来显示。

现在我是 Android 开发 Java 的新手,我尝试了其中之一:

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

实际上,while(true) 会导致我的应用程序在开始时卡住。

最佳答案

您可以使用包含BooleanMutableLiveData,并注册 Activity 以使用.observe() 观察它。

每当这个 boolean 值发生变化时,onChanged() 回调就会被 boolean 值的新值触发。

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());
            }
        });
        
    }
}

用于切换 boolean 值以测试它的按钮

关于javascript - 如何像 React.js 一样在 Java 中进行实时值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65526623/

相关文章:

android - 在 PreLollipop 设备中看不到 RelativeLayout 中的 View /布局

android - Flutter:使用 EventChannel 的 PlatformException

Android大写字符在手机中不起作用

javascript - 更改功能也会影响克隆 div

javascript - 使用jQuery根据Input隐藏父元素

java - org.hibernate.MappingException : Unknown entity: annotations. 用户

java - C# 和 Java (Android) 中的算法转换为 HTML

javascript - Atom 无法为数组中的字符串元素着色

javascript - 如何以编程方式在单击按钮时将三个 js 中的网格聚焦?

java - 为什么我会收到 InvalidDnDOOperationException?