在 OnCreateView 调用之外动态添加视图到片段

Dynamically Add View To Fragment Outside OnCreateView Call

我查看了大约 12 个 SO 帖子,并阅读了关于 Activity 和 Fragments 的文档。

我有我认为是一个非常普遍的问题,但也许我遗漏了一些基本的东西。

我有一个片段。此片段正在从 Java 而不是 XML 创建其视图。在运行时,我想向其中添加图像。我已经尝试将视图添加到 viewgroupd,创建一个 LinearLayout 并将其添加到视图,以及其他一些东西,但 none 它们的工作。我经常遇到崩溃(没有错误日志 :?().

这是我最好的尝试代码:

iImage image = new iImage(getActivity());
image.setImageResource(R.drawable.image);
LinearLayout.LayoutParams imageParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
image.setLayoutParams(imageParams);
((ViewGroup)getFragmentManager().findFragmentById(resourceId).getView()).addView(image);

如果您能告诉我如何向片段添加视图,我将不胜感激!

您遇到了一个非常普遍的问题。解决方案是为您的膨胀视图保留一个私有变量,您可以稍后使用它......无论在哪里。在此示例中,我假设您的根布局(XML 中最顶层的元素)是 LinearLayout

public class DummyFragment extends Fragment {

    private LinearLayout root;

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        LinearLayout = (LinearLayout)  inflater.inflate(R.layout.dummy_fragment_layout, container, false);
        return root;
    }

}