在片段内以编程方式包含视图中的布局

时间:2016-10-30 20:17:54

标签: java android xml android-layout android-fragments

好吧我有一个片段,我想在其'xml文件中包含另一个以编程方式膨胀的布局

片段:

{('Alabama', 660367.0), ('Alabama', 353089.0), …

xml的片段文件:

public class zGoal_Fragment extends Fragment{

    private LinearLayout todayView;
    private View view;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.main_goal_view, container, false);
        todayView = (LinearLayout)view.findViewById(R.id.todayView);

        return view;
    }
}
我希望以编程方式包含在上面的xml中的

和xml布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="fill_parent"
          android:id="@+id/todayView"
>
</LinearLayout>

我尝试了几种不同的方法,所有这些方法导致“在空对象引用上”错误......

plz help:))

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的解决方案是Android ViewStubs。这些是动态膨胀的布局。

有关详细信息,请参阅以下内容:

How to use View Stub in android

https://developer.android.com/reference/android/view/ViewStub.html

但是,如果您希望在运行时期间将一个布局扩充到另一个布局中,您可以尝试使用 include 标记:< / p>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="fill_parent"
          android:id="@+id/todayView">

         <include layout="@layout/your_layout_file_name"/>
</LinearLayout>

答案 1 :(得分:0)

你有没有试过这样的事情:

LinearLayout child = getLayoutInflater().inflate(R.layout.goalEditLayout, null);
todayView.addView(child);

编辑: 在onCreateView里面:

LinearLayout inflatedLayout = (LinearLayout) inflater.inflate(R.layout.goalEditLayout, todayView, true);