2010-11-20 129 views
1

当我在Android中更改屏幕的方向时,将调用一个来自Spinner的OnItemSelectedListener。OnItemSelectedListener调用屏幕旋转

它不只是模拟器,它也发生在物理电话上。

我该如何阻止这种情况发生?

干杯。

+0

旋转设备时会重新创建该活动。你需要处理这个,而不是停止发生。阅读http://developer.android.com/guide/topics/fundamentals.html#actlife – Pentium10 2010-11-20 20:10:14

回答

2

纺纱器总是被选中。当Spinner的状态发生变化时(包括Spinner第一次设置时),将调用您的OnItemSelectedListener。正常的方向更改会导致您的活动被破坏并重新创建。因此,如果您的活动首次出现在屏幕上时正在调用您的OnItemSelectedListener,则在方向改变时将再次调用它。

我该如何阻止这种情况发生?

你也许可以玩弄,当你调用setOnItemSelectedListener()相比setAdapter(),时机,看看是否有帮助。

+0

中的活动生命周期章节好的感谢信息,这是有道理的。我该如何玩弄时间?我是Android的新手,所以请使用简单的文字;) – Entropy1024 2010-11-20 20:24:54

+0

@ Entropy1024:更改Java语句的顺序。 – CommonsWare 2010-11-20 20:35:02

4

如果旋转屏幕旋转时微调器的selectedItemPosition不为零,您也将获得第二个调用,因为Android将位置设置为旋转前的位置。使用onSaveInstanceState来计算非零位置中的旋钮的数量并使用此计数,以便OnItemSelected代码刚刚返回,直到计数减少为零。

您还需要非常小心的可以看到View.GONE的旋钮。当我可以找到时间来描述如何处理这些问题时,我会在这里添加更多的文本。

+1

您能否请您写下为什么您应该注意可以具有View.GONE可见性的旋钮。提前致谢 – 2015-09-11 17:07:04