Android fragment - findViewById returns null

18,708

use following after moving this line to onCreateView() if you want to use your listview in your fragment

ListView lv = (ListView)rootview.findViewById(android.R.id.list);
Share:
18,708
Charline
Author by

Charline

Updated on July 27, 2022

Comments

  • Charline
    Charline almost 2 years

    I have a problem that seems to be quite common on the internet : I have created an activity with just a fragment. This is the generated code:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_customer);
            if (savedInstanceState == null) {
                getFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
                ListView lv = (ListView) findViewById(android.R.id.list);
            }
        }
    

    After or inside the condition, I can't get any object with findViewById: it is always null. Here is the rest of the generated code :

    public static class PlaceholderFragment extends Fragment {
    
        public PlaceholderFragment() {
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_customer,
                    container, false);
            return rootView;
        }
    

    activity_customer.xml:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.axacs.marc.CustomerActivity"
        tools:ignore="MergeRootFrame" />
    

    the listview is actually in fragment_customer.xml:

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/new_folder_button"
        android:text="" />
    

    Does anyone know what is missing ?

  • dialex
    dialex about 8 years
    cannot resolve "rootview" symbol :(
  • Anirudh Sharma
    Anirudh Sharma about 8 years
    @dialex rootview is not a predefined symbol.Its the name given to the view that is going to be inflated in the fragment.It can have any name.
  • sms247
    sms247 about 8 years
    @dialex your function->onCreateView should looks like -> Bundle savedInstanceState) { View rootview=null; rootview=inflater.inflate(R.layout.fragment_web_view, container, false); ListView lv = (ListView)rootview.findViewById(android.R.id.list); return rootview;