ViewPager杀死它后片段布局没有显示

时间:2012-07-30 20:54:37

标签: android android-layout android-fragments android-viewpager

现在我正在使用Jake Wharton的ViewPagerIndicator库。我在其中添加了几个Fragments,可以来回滑动。如果我从Fragment远离多个面板,则会将其删除(onDestroyView()调用)。相反,如果我在Fragment的一个面板中滑动,则会重新添加(onCreateView()调用)。

当我的Fragment被销毁/再次添加时,曾经存在的Views被销毁,我又回到了空白屏幕。我在LinearLayout中添加了Fragment TextViews。在重新创建.size()时调用LinearLayout会显示正确的计数,但我无法确定要调用的内容以便再次显示它。我已尝试在<LinearLayout>.requestLayout()中添加onResume(),但这不起作用。

如果我发布任何相关代码,请告诉我。我不认为这对我的片段有任何特殊性。

编辑:所以最初我认为我必须处理onSavedInstanceState(),但我以前从未保存过整个布局。我的另一个想法是迭代我的LinkedList TextViews,然后将它们添加回我的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);
}

1 个答案:

答案 0 :(得分:3)

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