当前位置: 首页 > 面试题库 >

在Android中,每当变量更改时如何采取措施?

花永昌
2023-03-14
问题内容

在Android应用程序中(或者在没有区别的情况下,在Java中更常见),什么时候变量值发生变化的最佳方法是什么?


问题答案:

您真正想要做的是设置事件驱动模型,以在事件发生时触发侦听器(在您的情况下,说变量值已更改)。这不仅对于Java,而且对于其他编程语言也非常普遍,尤其是在UI编程的情况下(尽管不一定如此)

通常,这可以通过执行以下步骤来完成:

  • 确定在事件触发时侦听器应实现的接口。对于您的情况,可以将其称为VariableChangeListener并将接口定义为:
    public interface VariableChangeListener {
        public void onVariableChanged(Object... variableThatHasChanged);
    }
    

您可以提出任何您认为对侦听器重要的论点。通过抽象到接口中,您可以灵活地在变量已更改的情况下执行必要的操作,而不必将其与发生事件的类紧密耦合。

  • 在事件发生的类中(同样,对于您的情况,变量可能会更改的类),添加一种方法来注册事件的侦听器。如果调用接口VariableChangeListener,则将有一个方法,例如
        // while I only provide an example with one listener in this method, in many cases
        // you could have a List of Listeners which get triggered in order as the event 
        // occurres
        public void setVariableChangeListener(VariableChangeListener variableChangeListener) {
           this.variableChangeListener = variableChangeListener;
        }

默认情况下,没有人在听事件

  • 如果发生事件(变量已更改),则将触发监听器,代码看起来像
       if( variableValue != previousValue && this.variableChangeListener != null) {
           // call the listener here, note that we don't want to a strong coupling
           // between the listener and where the event is occurring. With this pattern
           // the code has the flexibility of assigning the listener
           this.variableChangeListener.onVariableChanged(variableValue);
       }

同样,这是在编程中对事件或变量更改做出基本反应的非常普遍的做法。在Javascript中,您可以看到它是onclick()的一部分,在Android中,您可以检查事件驱动器模型,以了解各种侦听器,例如在Button
onclick事件上设置的OnClickListener。在您的情况下,您将仅基于不同事件触发侦听器,即在变量更改时



 类似资料:
  • 问题内容: 我在.each循环内调用ajax jquery函数,并且仅当循环内的所有ajax调用完成并成功时,我才想执行一个操作。 怎么做?否,因为这会阻止浏览器。 问题答案: 这是一种方法: 您可以根据复选框的数量来计算初始值,也可以从0开始,在每次ajax请求之前将其递增,但这是一般的想法。 希望这可以帮助。干杯

  • 我想每次改变整数变量时发送更新

  • 我的课程注册项目应该有很多方法,比如(添加课程),(添加导师),等等(添加学生())就是其中之一,我想知道每次创建对象时如何更改对象的变量(std)我不知道每个对象如何都有相同的变量 那么,我想把变量改为std1、std2之类的任何建议 我想知道这是不是我做错了什么? 如果每个对象都用相同的变量声明,那么它会将每个创建的对象的数据克隆到新创建的对象? 谢谢你。

  • 问题内容: 如何轻松检测变量何时更改值?我希望每当指定变量更改值时,程序的执行就在调试器上中断。现在,我正在使用Eclipse的调试器。 问题答案: 对于类或实例变量 右键单击大纲视图中的变量 选择“切换监视点” 然后,在breapkoints视图中,可以右键单击结果条目 选择“断点属性” 取消选择“现场访问”。

  • 问题内容: 和之间的MySQL FK有什么区别?从文档来看,它们看起来完全一样。是这样吗 如果是这样,为什么两者都有? 问题答案: 从MySQL文档开始:https : //dev.mysql.com/doc/refman/8.0/en/create-table-foreign- keys.html 某些数据库系统具有延迟检查,并且是延迟检查。在MySQL中,外键约束会立即检查,因此与相同。

  • 请帮助我订阅更改的变量。我做了简单的微调。服务中的微调状态(真|假)存储: 在组件模板中,我通过条件显示微调器: 在组件中,我尝试订阅服务isVisibleSpinner变量中的更改: 但控制台输出遵循错误消息: 类型“boolean”不可分配给类型“Observable”。