ViewPager销毁后,碎片布局未显示

3

我现在正在使用Jake Wharton的ViewPagerIndicator库。我已经添加了几个Fragments到其中,并可以很好地向前和向后滑动。如果我从一个Fragment中滑动超过一个面板,那么它就会被删除(onDestroyView()被调用)。相反,如果我在一个面板内滑动一个Fragment,那么它就会被添加回来(onCreateView()被调用)。

当我的Fragment被销毁/重新添加时,曾经存在于其中的Views也被销毁了,我回到了一个空白屏幕。我在我的Fragment中有一个LinearLayout,我在其中添加TextViews。当它重新创建时,在LinearLayout上调用.size()会显示正确的计数,但我无法弄清楚该调用什么以便再次显示它。我尝试在onResume()中添加<LinearLayout>.requestLayout(),但这没有起作用。

如果需要,让我知道是否应该发布任何相关代码。但我认为这些都不是特定于我的Fragment的内容。

编辑: 所以最初我想处理onSavedInstanceState(),但我从来没有在其中保存整个布局。我另一个想法是迭代我的LinkedListTextViews,然后将它们添加回到我的LinearLayout中。这给了我一个错误,因为View已经有父级,这是有道理的。

这是我如何添加我的TextView:

public void addQuickLook(QuickLookView v)
{
    mViews2.add(v); //LinkedList of QuickLookViews
    mMeterLayout.addView(v); //Adding to the LinearLayout
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    return inflater.inflate(R.layout.fragment_quicklook, container, false);
}

@Override
public void onActivityCreated(Bundle savedInstanceState)
{
    super.onActivityCreated(savedInstanceState);
    mMeterLayout = (LinearLayout) getActivity().findViewById(R.id.quickLookList);
}

你能否发布一个不起作用的片段?问题很可能是你添加TextView的位置。 - edthethird
这是关于ViewPager的问题,它是支持库的一部分,而不是ViewPagerIndicator本身。 - Jake Wharton
1个回答

3

我想我已经解决了这个问题。 我所做的是在我的FragmentPagerAdapter中覆盖了destroyItem()方法并将其留空。 我应该更仔细地阅读FragmentPagerAdapter开发者页面上关于它的期望行为,特别是当一个Fragment不再可见时,它会将所有内容加载到内存中,并杀死Fragment的视图以节省内存。 不确定这是否是正确的方法,但目前它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接