想知道如何解决以下问题:根据两个Spinner所选项来计算结果。为了处理UI,即用户在一个Spinner中选择一个新项,我在活动的onCreate()
方法中使用setOnItemSelectedListener
安装了一个监听器。
现在:这当然可以正常工作。监听器的工作是触发对结果的新计算。
问题在于:由于我拦截了onPause()
和onResume()
以保存/恢复上一次的状态,我编写了一个方法来编程方式地设置这两个Spinner的选定项,就像这里一样:
startSpinner.setSelection(pStart);
destSpinner.setSelection(pDest);
这两个调用也会调用监听器!我的结果计算方法以及通知新结果集的方法在此处被调用了两次!
这种情况下,一个愚蠢的直接方式是使用布尔变量禁用监听器内部执行的任何操作,在设置所选项目之前设置它,并在之后重新设置。 好吧。但有更好的方法吗?
我不希望代码行动调用监听器,只希望用户行动调用它们! :-(
你怎么做到的? 谢谢!