我有一个图库,它允许用户浏览图库,选择图像作为他们的选择,并继续浏览图库而不更改该选择。这可以通过使用onItemSelected来查看他们正在选择的图像(即点击)是否已经被选择的图像(通过图库的运动)。所以:改变方向后图库调用onItemSelected
- 用户在Gallery中前后移动。
- 用户决定自己喜欢的图像并将图库置于其上。
- 用户单击图像,它将被“选中”并被赋予绿色边框。
- 用户可以继续前进或后退到图库中,而不会自动“选择”当前居中的图像。
这很好。但是,我现在试图在选择图像时允许方向更改,并且我发现在所有onConfigChanged代码执行完毕后,在Gallery上调用onItemSelected。
所以onConfigChange我设置参数(即在方向改变之前画廊在哪个索引上),然后我调用我的initialiseUI方法。这将成功执行,并设置所需的所有内容,包括将Gallery定位在与定位更改前相同的索引处。但是,在中心图像上调用onItemSelected。这会导致居中图像被选为他们的选择(绿色边框等),而不需要用户点击它。
我尝试使用布尔标志“configIsChanging”,以便只在configIsChanging为false时执行onItemSelected代码。不幸的是,这似乎并不奏效,因为onItemSelected在onConfigChange完成之后被调用,并且到那时该标志已被重置为false。
@Override
public void onConfigurationChanged(Configuration newConfig) {
configChanging = true;
tempConfigDisplayedIndex = mGallery.getSelectedItemPosition();
super.onConfigurationChanged(newConfig);
setContentView(R.layout.take_questionnaire);
initialiseUI();
configChanging = false;
}
有没有人有任何有关流氓onItemSelected事件的经验?有任何想法吗?如果需要,我可以发布更多的代码。非常感谢您的帮助。
是的,我已经这样做了,但是我的Activity比上面解释的代码更复杂。它遍历许多“问题”,每个问题都有一组图像作为潜在答案,用户必须为每个问题选择一个。除非我在代码中处理配置更改,否则方向更改将使用户回到第一个问题。 – breadbin 2012-04-16 11:19:21
我明白问题的原因,但这些可能会帮助您更好地进行调试:http://developer.android.com/guide/topics/manifest/activity-element.html#config和http://stackoverflow.com/questions/456211 /活动的重启上旋转机器人。这个想法是在onRetainNonConfigurationState – josephus 2012-04-16 11:29:48
上使用onSavedInstanceState,我会看看,谢谢。 – breadbin 2012-04-16 11:31:52