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);
Author by
Charline
Updated on July 27, 2022Comments
-
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 about 8 years
cannot resolve "rootview" symbol
:( -
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 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;