我对FragmentStateAdapter中的createFragment方法有一个小问题。我希望每当ViewPager2中的片段发生变化时都会调用createFragment。但是,createFragment仅在发生第一个片段更改时调用。那么createFragment方法将不再被调用。
我的代码:
@NonNull
@Override
public Fragment createFragment(int position) {
switch (position)
{
case 0:
{
myTextView.setText("0");
return discover_page;
}
case 1:
{
myTextView.setText("1");
return top_page;
}
case 2:
{
myTextView.setText("2");
return friends_page;
}
default: return null;
}
}
在这段代码中,myTextView在第一次片段更改发生时被设置为“2”,并且永远不会变成其他值,即使片段正在更改。有人知道为什么吗?
1条答案
按热度按时间ws51t4hk1#
因为碎片并不是一直都在(重新)创建。它们被创建然后被重复使用。为了让你的textview适当地改变文本,你需要使用OnPageChangeCallback
就像这样: