在一个Android应用程序(或更一般的Java,如果没有不同),每当一个变量的值发生变化时调用方法的最佳方式是什么?在Android中,如何在变量发生变化时采取行动?
回答
你真的想要做的是建立事件驱动模型触发听者当一个事件发生什么(在你的情况,说一个变量的值发生了变化:您可以根据您的要求把你的代码)。这是很常见的,不仅对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。在你的情况下,你只需根据不同的事件触发监听器,即每当变量发生变化时
我*想*你可能终于帮助这个便士为我听这个解释的听众。此页面正在添加书签! –
有人可以解释什么时候应该调用setVariableChangeListener方法吗?由于'VariableChangeListener'是一个接口,究竟是什么传入'setVariableChangeListener'? – AvP
你可以像这样做。因为你没有定义你想要的东西。它可能工作。假设你的变量名是v.拿一个变量previous_v。使previous_v = v; 。
if(v!=previous_v){
//your stuffs
}
这不起作用,因为它只会检查一次,然后再次检查。作者想知道变量何时发生变化,就像一个不断检查的背景while循环。 –
- 1. 如何在Android Studio中变量发生变化时进行设置?
- 2. 如何在变量数量发生变化时在循环中编写公式?
- 3. 如何在C#中的变量值发生变化时执行代码?
- 4. ListView中的图像在Android中滚动时发生变化
- 5. 变量变化时字典中的值发生变化
- 6. 如何在CSS属性的变量发生变化时执行jquery
- 7. UITableView contentOffset在拖动时发生变化
- 8. 如何在数量发生变化时实时输出?
- 9. 列表视图项在android中滚动时发生变化
- 10. Javascript:如何检测变量的引用何时发生变化
- 11. 在C中,读取字符和整数时变量值发生变化
- 12. 如何使用变量点击图像时发生变化
- 13. 变量更新时变量参数发生变化的函数
- 14. 任何变量发生变化时触发一个事件
- 15. 停在变量发生变化的那一行
- 16. 如果settimeout之后的变量发生变化,但在真正运行之前会发生什么变化
- 17. 当变量发生变化时做一个动作
- 18. Android-视图高度在运行时间内发生变化
- 19. 如何在多关系发生变化时执行迁移?
- 20. MKCoordinateregion的中心在跨度发生变化时发生变化 - iphone
- 21. 如何取代存在量化变量?
- 22. 在C#中运行代码行后,变量的值会发生变化吗?
- 23. macOS中的PATH变量在新选项卡上发生变化
- 24. ReactJS变量在多个数组中发生变化
- 25. 变量不发生变化外封
- 26. 暂停直到变量发生变化
- 27. 日期在解析时发生变化
- 28. CALayerArray在枚举时发生了变化
- 29. 当'道具'发生变化时'this'发生变化
- 30. UICollectionView滚动时图像发生变化
必须有一段代码改变变量 - 你为什么不在那里采取行动? –
因为变量更改时我需要访问的对象不在代码的范围内,所以不能更改变量。 – tsvallender