动态向 Fragment 添加按钮

2024-06-27

我一直在尝试动态地将按钮添加到我的片段中,但我尝试过的所有方法都不起作用。

这些是我尝试过的一些方法:

1.

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

LinearLayout linearlayout = new LinearLayout(getActivity());

        LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);

        linearlayout.setLayoutParams(buttonParams);
        linearlayout.setOrientation(LinearLayout.HORIZONTAL);

        Button button = new Button(getActivity());
        button.setLayoutParams(buttonParams);
        button.setText("????????????????????");
        button.setTextSize(16);

        Button button2 = new Button(getActivity());
        button2.setLayoutParams(buttonParams);
        button2.setText("!!!!!!!!!!!!!!!!!!");
        button2.setTextSize(64);

        linearlayout.addView(button);
        linearlayout.addView(button2);

        container.addView(linearlayout);
        View myView = inflater.inflate(R.layout.fragment_general_layout, container, false);

 return myView;

    }

这会给我以下屏幕截图第一种方法 https://i.stack.imgur.com/abyHG.png。 我真的不喜欢这个,因为这会在活动本身上创建一个按钮,该按钮会出现在使用相同活动的其他片段上。

  1. 对于第二种方法

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

View myView = inflater.inflate(R.layout.fragment_general_layout, container, false);


            for (int i = 0; i < ArrayOfNames.length; i++) {

                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                        LinearLayout.LayoutParams.MATCH_PARENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT);

                Button btn = new Button(myView.getContext());
                btn.setId(i);
                final int id_ = btn.getId();
                btn.setText(ArrayOfNames[i]);
                btn.setBackgroundColor(Color.CYAN);
                btn.setLayoutParams(params);
                linearlayout.addView(btn, params);
                btn = myView.findViewById(id_);

                btn.setVisibility(View.VISIBLE);

                btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                            //do smth


                    }
                });
return myView;
}

我认为这个方法将使按钮(因为代码运行良好,并且至少在设置 OnClickListner() 时按钮没有空指针引用。但我看不到我屏幕上的实际按钮。另外,无法点击它。

我尝试参考这些 网址:以编程方式将按钮添加到 Fragment https://stackoverflow.com/questions/34963818/programmatically-add-buttons-to-a-fragment

以编程方式向片段添加按钮 https://stackoverflow.com/questions/11066847/adding-buttons-programmatically-to-a-fragment

如何以编程方式将按钮添加到片段 https://stackoverflow.com/questions/24807982/how-to-add-a-button-programmatically-to-a-fragment?lq=1

任何帮助将非常感激。


The onCreateView方法期望您返回正在膨胀的视图。您的代码很好,但是您将按钮添加到了错误的视图。试试这个:

//container.addView(linearlayout);
myView = inflater.inflate(R.layout.fragment_general_layout, container, false);
myView.addView(linearlayout);

这应该将您的按钮添加到您的视图中。我假设你的R.layout.fragment_general_layout is a LinearLayout with orientation="vertical"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态向 Fragment 添加按钮 的相关文章

随机推荐