当我在 Android 中更改屏幕方向时,会调用 Spinner 中的 OnItemSelectedListener。
这不仅仅是模拟器,它也发生在实体手机上。
我怎样才能阻止这种情况发生?
干杯。
当我在 Android 中更改屏幕方向时,会调用 Spinner 中的 OnItemSelectedListener。
这不仅仅是模拟器,它也发生在实体手机上。
我怎样才能阻止这种情况发生?
干杯。
如果屏幕旋转时微调器的 selectedItemPosition 不为零,您还会收到第二次调用,因为 Android 会将位置设置为旋转前的位置。使用 onSaveInstanceState 计算处于非零位置的微调器数量并使用此计数,以便 OnItemSelected 代码仅返回,直到计数减为零。
您还需要非常小心可以看到 View.GONE 的微调器。当我有时间准确描述如何处理这些问题时,我将在此处添加更多文本。
始终选择微调器。当 的状态发生任何变化时,您OnItemSelectedListener
将被调用Spinner
,包括Spinner
首次设置时。正常的方向更改将导致您的活动被破坏并重新创建。因此,如果您OnItemSelectedListener
的活动首次出现在屏幕上时被调用,则在方向更改时将再次调用它。
我怎样才能阻止这种情况发生?
setOnItemSelectedListener()
您可能可以比较一下您打电话的时间setAdapter()
,看看它是否有帮助。
在OnItemSelectedListener
微调器包含其适配器之前调用 ,因此您需要验证视图在OnItemSelected
方法内部不为空,如下所示:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override public void onItemSelected (AdapterView<?> parent, View view, int position, long id){
if(view != null) { // <- here is the validation
// Your code to do something with the selected item
}
}
@Override public void onNothingSelected(AdapterView<?> parent) { }
});