【发布时间】:2011-01-18 20:22:53
【问题描述】:
只是想知道您是如何处理以下问题的:根据两个微调器选择的项目计算结果。为了处理 UI 方面的事情,即用户在其中一个微调器中选择一个新项目,我在我的活动的 onCreate() 方法中为微调器使用 setOnItemSelectedListener 安装了一个侦听器。
现在:当然,这行得通。监听器的工作是触发对结果的新计算。
问题:因为我拦截了onPause()onResume() 来保存/恢复上一个状态,所以我有一个方法可以设置这两个微调器的选定项目以编程方式,如下所示:
startSpinner.setSelection(pStart);
destSpinner.setSelection(pDest);
这两个调用也调用了侦听器!我的结果计算方法加上新结果集的通知在这里调用了两次!
一个愚蠢的直接方法是有一个布尔变量禁用无论监听器在里面做什么,在设置所选项目之前设置它并在之后重置它。 好的。但是有没有更好的方法??
我不希望监听器被代码调用——动作,只有用户动作! :-(
你是怎么做到的? 谢谢!
【问题讨论】:
-
您可以使用 setSelection(pStart, false) 作为动画参数。但它并非一直有效。