gpt4 book ai didi

java - 动态添加按钮到 Fragments

转载 作者:搜寻专家 更新时间:2023-11-01 08:21:52 24 4
gpt4 key购买 nike

我一直在尝试动态地向我的 fragment 添加按钮,但我尝试过的所有方法都以某种方式不起作用。

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

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;

}

这将给我以下屏幕截图 First method .我真的不喜欢这样,因为这会在 Activity 本身上创建一个按钮,该按钮会出现在我使用相同 Activity 的其他 Fragments 上。

  1. 对于第二种方法

public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup 容器,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() 时没有空指针引用。但我看不到实际按钮我的屏幕。另外,无法点击它。

我试着引用这些网址:Programmatically add buttons to a Fragment

Adding buttons programmatically to a fragment

How to add a button programmatically to a fragment

任何帮助将不胜感激。

最佳答案

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

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

这会将您的按钮添加到您的 View 中。我假设您的 R.layout.fragment_general_layout 是具有 orientation="vertical"

LinearLayout

关于java - 动态添加按钮到 Fragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50210994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com