【问题标题】:Android: Cyclic event chain, how to avoid it?Android:循环事件链,如何避免?
【发布时间】:2011-08-10 03:27:25
【问题描述】:

问题

类似于关于 Swing (The Elegant way to handle Cyclic Event in Java?) 的问题,我正在寻找一种优雅的方法来避免两个小部件视图相互依赖的循环事件链。

更具体地说,我有两个EditText's,其中一个代表以千克为单位的重量,另一个代表以磅为单位的重量。用户应该能够在其中一个中输入文本,并在他/她键入时更新另一个。

我尝试过的

对我发现的控制器更改采取行动的唯一方法是在每个 EditText 视图上注册一个 TextWatcher。但是如果我在回调中修改另一个EditText,如何优雅地避免发生的循环事件链。

我尝试通过重载setTextEditText 进行子类化并将它们绑定在一起而不使用TextWatcher,并让该方法修改值并调用另一个控制器的setText。但是,如果不调用setText,这不起作用,当用户从 UI 输入文本而不是以编程方式输入文本时似乎就是这种情况。

任何想法都会有所帮助,谢谢。

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    当控制器聚焦和不聚焦时,我最终添加和删除了TextWatcher's。这有一个缺点,即在以编程方式设置控制器的文本时不使用相同的镜像代码(除非我也以编程方式设置焦点,这不是一个很好的解决方案,IMO)。

    它工作正常,但我仍然认为那里有更清洁的解决方案。

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 2021-12-03
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多