java - 在 fragment 布局中创建动态 View 时出现问题

标签 java android view

我试图将一些复选框动态地设置到我的 fragment 布局中,但我做不到。需要一些帮助,这是我第一次使用 fragment ,我有点迷茫。

谢谢大家。

我把我的代码贴在下面:

主要 Activity .java:

 public class MainActivity extends FragmentActivity {

  @SuppressLint({"NewApi", "ResourceType"})
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LinearLayout fragContainer = (LinearLayout) findViewById(R.id.pasosLayout);
    LinearLayout pasosLayout = new LinearLayout(this);
    pasosLayout.setOrientation(LinearLayout.VERTICAL);
    pasosLayout.setId(12345);

    getFragmentManager().beginTransaction().add(pasosLayout.getId(), TestFragment.newInstance("I 
am frag 1"), "someTag1").commit();


    fragContainer.addView(pasosLayout);

   }
 }    

测试 fragment .java:

   public class TestFragment extends Fragment {

   public static android.app.Fragment newInstance(String text) {

    TestFragment f = new TestFragment();

    Bundle b = new Bundle();
    b.putString("text", text);
    f.setArguments(b);
    return f;
  }

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

    View v =  inflater.inflate(R.layout.fragment, container, false);

    ((TextView) v.findViewById(R.id.tvFragText)).setText(getArguments().getString("text"));
    return v;
}
}

最后,我的 fragment.xml :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="200dp" >

 <TextView
    android:id="@+id/tvFragText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="" />

</RelativeLayout>

最佳答案

您在 fragment 交易后将您的 pasosLayout 添加到 fragContainer
因此,首先将 pasosLayout 添加到 fragContainer 中,您还应该将 layoutParams 设置为您的 pasosLayout

public class MainActivity extends FragmentActivity {

    @SuppressLint({"NewApi", "ResourceType"})
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout fragContainer = (LinearLayout) findViewById(R.id.pasosLayout);
        LinearLayout pasosLayout = new LinearLayout(this);

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                       ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        pasosLayout.setLayoutParams(layoutParams);

        pasosLayout.setOrientation(LinearLayout.VERTICAL);
        pasosLayout.setId(12345);


        fragContainer.addView(pasosLayout);

        getFragmentManager().beginTransaction().add(pasosLayout.getId(), 
        TestFragment.newInstance("I am frag 1"), "someTag1").commit();

    }
}    

关于java - 在 fragment 布局中创建动态 View 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086117/

相关文章:

java - 什么是 Weka 中修剪过的和未修剪过的树?

android - Fragments 中的 AsyncTask 执行数据库更新

php - 使用外部数据库验证 Android APP 中的用户凭据

android - 如何检查 View 是否对用户可见

laravel - 为什么我的 view-policy 有效,但我的 viewAny-policy 无效?

java - 如何调用servlet?

Java - 在程序中创建新的文件扩展名

android - 尝试在低于最低 sdk 的设备上安装 apk 时出现“解析错误”

php - 在 PHP 中渲染 View

java - Maven 依赖项在 WEB-INF/lib 中不可见