ListView选择不改变

ListView selection does not change

在我的应用程序中,我有 activity,其中包含两个片段。

The first fragment contains ViewPager which contains a few fragments(the first fragment of viewpager fragments contains ListView)。第二个片段是简单的设置片段。例如,我检查了 ListView 上的第二个元素,单击设置,然后 activity 中的第二个片段打开。我单击后退按钮并返回到我的 ListView,然后调用 :

listView.setItemChecked(0, true);
listView.setSelection(0);

但是这样不行,第二个元素还是checked... 我通过以下方式从 ViewPager 转到第二个片段:

getSupportFragmentManager().beginTransaction()
                .replace(R.id.slpdActivityLayout, fragment).addToBackStack(null).commit();

为什么我的选择只有在按下后退按钮时才起作用?

这与您的片段的生命周期有关 -> here <- 您不能在 onCreateView 中进行 UI 更新。所以将您的代码置于 onStart 或更好的 onResume

删除:

public void onCreateView() {
    listView.setItemChecked(0, true);
    listView.setSelection(0);
}

添加:

public void onResume() {
    listView.setItemChecked(0, true);
    listView.setSelection(0);
}