【问题标题】:How to do a realtime value change in Java like React.js如何像 React.js 一样在 Java 中进行实时值更改
【发布时间】:2021-01-01 00:59:04
【问题描述】:

我已经习惯了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显示。

现在我是 Android 开发的 Java 新手,我尝试了以下方法之一:

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

实际上,while(true) 会导致我的应用在开始时冻结。

【问题讨论】:

  • 两者不等价。您正在将苹果与橙子进行比较。前者没有while循环。
  • 你想在布尔值改变时执行一些代码吗?
  • @Zain 类似的东西

标签: javascript java android


【解决方案1】:

您可以使用包装BooleanMutableLiveData,并使用.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());
            }
        });
        
    }
}

用于切换布尔值以进行测试的按钮

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多