Reputation: 393
I am trying to fill my list in a fragment but it return null object reference.(Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
)
There is my code:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person.add(new Gender("35AE111", false, "60 km/h"));
final ListView listview= (ListView)getView().findViewById(R.id.liste);
CustomAdapter customAdapter=new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_all_vehicles, container, false);
}
}
Upvotes: 0
Views: 132
Reputation: 1075
To make sure your view is inflated you can override onViewCreated
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
person.add(new Gender("35AE111", false, "60 km/h"));
final ListView listview= (ListView) view.findViewById(R.id.liste);
CustomAdapter customAdapter = new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
}
Also make sure that the listview id is correct in your XML, sometimes that is an issue.
Upvotes: 0
Reputation: 2106
The null ptr exception happened since onCreate() got called before onCreateView() and getView() in onCreate returned null. Try the below snippet. I have moved your code in onCreate() to onCreateView()
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_all_vehicles, container, false);
person.add(new Gender("35AE111", false, "60 km/h"));
final ListView listview= (ListView)getView().findViewById(R.id.liste);
CustomAdapter customAdapter=new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
return view;
}
Upvotes: 0
Reputation: 19237
You need to move your things that need the view into onCreateView:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
person.add(new Gender("35AE111", false, "60 km/h"));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_all_vehicles, container, false);
final ListView listview= (ListView)view.findViewById(R.id.liste);
CustomAdapter customAdapter=new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
return view;
}
Upvotes: 1
Reputation: 2982
The exception arising because you are calling findviewbyid(int)
in onCreate()
and inflating layout in onCreateView()
....!
The issue is that onCreate()
method of a fragment calls first and after that onCreateView is called by the fragment life cycle...!
You should read the fragment's life cycle
Below code help you,
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_all_vehicles, container, false);
person.add(new Gender("35AE111", false, "60 km/h"));
final ListView listview= (ListView)view.findViewById(R.id.liste);
CustomAdapter customAdapter=new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
return view;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
Upvotes: 0
Reputation: 5900
The problem is that Fragment
's view is not created yet in onCreate
method. You should move your code from onCreate
to onCreateView
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_all_vehicles, container, false);
final ListView listview= (ListView)view.findViewById(R.id.liste);
CustomAdapter customAdapter=new CustomAdapter(getActivity(), kisiler);
listview.setAdapter(customAdapter);
return view;
}
Upvotes: 0