我在屏幕旋转后突出显示片段内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上工作,但它可以正常工作。
另一个想法?