Filip Luchianenco
Filip Luchianenco

Reputation: 7012

Android Add Layout View to another Layout programatically

I have a LinearLayout with Vertical orientation and I would like to add another horizontal LinearLayout with two childs.

Here is my xml layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Gray_background"
android:orientation="vertical" >

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_marginTop="10dp"
    android:background="@color/GrayStroke" />

<LinearLayout
    android:id="@+id/contacts_tab_menulist"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/White"
    android:orientation="vertical" >
</LinearLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@color/GrayStroke" /> </LinearLayout>

Here is the code which should do the job:

View rootView = inflater.inflate(R.layout.contacts_tab,
            container, false);      

        contacts_tab_menulist = (LinearLayout) getActivity().findViewById(R.id.contacts_tab_menulist);
    //      add LayoutParams
    LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 35);
    LinearLayout listItem = new LinearLayout(getActivity());
    listItem.setLayoutParams(lparams);
    listItem.setOrientation(LinearLayout.HORIZONTAL);

    AspectRatioImageView icon = new AspectRatioImageView(getActivity());
    LinearLayout.LayoutParams ic_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 25);
    icon.setImageResource(R.drawable.contacts_add_contact);
    icon.setLayoutParams(ic_params);
    listItem.addView(icon);

    TextView title = new TextView(getActivity());
    LinearLayout.LayoutParams t_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    title.setText("Add Contact");
    title.setId(0);
    title.setLayoutParams(t_params);
    listItem.addView(title);

    contacts_tab_menulist.addView(listItem);
return rootView;

I get a nullPointerException on contacts_tab_menulist.addView(listItem). What am I doing wrong?

Upvotes: 1

Views: 332

Answers (2)

dmananes
dmananes

Reputation: 104

Try replacing

contacts_tab_menulist = (LinearLayout) getActivity().findViewById(R.id.contacts_tab_menulist);

with

contacts_tab_menulist = (LinearLayout) rootView.findViewById(R.id.contacts_tab_menulist);

Upvotes: 2

mstrthealias
mstrthealias

Reputation: 2921

Get the view from your inflated view, since inflating the View does not mean its the current activities view:

    contacts_tab_menulist = (LinearLayout) rootView.findViewById(R.id.contacts_tab_menulist);

Upvotes: 1

Related Questions