1

这对我来说是一个。我有一个扩展 FragmentAnctivity 的 MainActiviy。我有 1 FrameLayout 和下面的按钮来更改框架的内容。我通过在 OnCreate 中为之前添加到 FrameLayout 的已创建片段切换显示/隐藏来做到这一点。

我还在 1 个片段中嵌套了更多片段(因为我有 1 个片段用于 1 种类型的内容,其中有 listFragment 在 OnItemClick 之后更改为 DetailFragment... 再次使用显示/隐藏方法)。

问题是在 2 个不同的内容中,我有 1 个 Fragment 类的 2 个不同实例,因此这 2 个实例使用 1 个相同的布局文件。尽管这些片段中的第一个被隐藏并显示了第二个,但当我通过第二个实例更改某些视图时,第一个实例的布局发生了变化,第二个保持与以前相同。(希望可以理解)

我想在管理和理解片段的生命周期方面完全是一个错误,所以请有人帮我解决这个问题吗?

非常感谢 :)

4

1 回答 1

1

我想您可以通过练习获得片段的要点。你的问题很简单。我几乎可以肯定您使用getActivity().findViewById(...)调用来访问您的Fragment(或嵌套Fragment的)中的视图。在这种情况下,Activity 会从整个视图层次结构中返回具有已定义 ID 的第一个视图。

解决方案非常简单——您只需要避免构造并在回调getActivity().findViewById(...)中获取所有指向视图的链接,并在所有未来操作中使用该链接。一切都会好起来的。这是一个简单的例子:onCreateView()

 private TextView mDummyText;

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

private void initMembersViews(View v) {
    mDummyText = (TextView) v.findViewById(R.id.fr_houses_list_text);
}

希望对您有所帮助!祝你好运!

于 2013-02-19T05:19:22.143 回答