我在屏幕旋转后突出显示片段内的 ListView 上的项目时遇到问题。由于我的代码灵感来自 ApiDemos 中的 FragmentLayout 示例,因此我对其进行了测试,并且出现了与所述相同的问题:
以纵向模式启动应用程序,选择一个项目,然后以横向模式旋转设备。先前选择的项目正确突出显示,详细信息片段显示正确的文本。切换回纵向模式,然后选择另一个项目。现在,在横向模式下切换时,“第一个”选定项目仍然突出显示,详细信息片段显示正确的文本,即“第二个”选定项目之一。
为什么突出显示错误的项目?列表片段中有对 getListView.setItemChecked(second_item_index, true) 的显式调用,但它使“第一个”项目突出显示。在调用 setItemChecked 之前,我尝试添加 setNotifyOnChange 和/或将所有项目设置为 false,但这没有任何改变。
这是一个错误还是缺少什么?
但是,有一个解决方法,我只是实现了 onStart 方法来设置项目:
@Override
public void onStart() {
super.onStart();
if (mDualPane) {
getListView().setItemChecked(mCurCheckPosition, true);
}
}
我不确定是否应该使用 onStart 在 UI 上工作,但它可以工作。
另一个想法?