I took example ACTIVITY of showing list of two columns and tried to implement in fragment. In activity no issues raised. In fragment app is getting crashed
newbie to android, In ADK no error it is showing, tried in different ways not working.
Error Log:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ekatechhp.pkmapplication, PID: 10662
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.example.ekatechhp.pkmapplication.fragment.FourFragment.onCreateView(FourFragment.java:36)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2243)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:654)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:146)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1244)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:669)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:631)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:612)
at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2831)
at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1608)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1601)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1569)
at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1874)
at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:2059)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Fourfragment.java:
@SuppressLint("ValidFragment")
public class FourFragment extends Fragment {
private ListView listView;
private MovieAdapter mAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_four, container,
false);
listView = (ListView)getActivity().findViewById(R.id.movie_list);
ArrayList<Movie> moviesList = new ArrayList<>();
moviesList.add(new Movie("After Earth" , "2013"));
moviesList.add(new Movie("Baby Driver" , "2017"));
moviesList.add(new Movie("Deadpool" , "2016"));
moviesList.add(new Movie("Divergent" , "2014"));
moviesList.add(new Movie("Fight Club" , "1999"));
moviesList.add(new Movie("Jaws" , "1975"));
moviesList.add(new Movie("Pirates of the Caribbean" , "2011"));
mAdapter = new MovieAdapter(getActivity(),moviesList);
listView.setAdapter(mAdapter);
return view;
}}
MovieAdapter:
public class MovieAdapter extends ArrayAdapter<Movie> {
private Context mContext;
private List<Movie> moviesList = new ArrayList<>();
public MovieAdapter(@NonNull Context context, ArrayList<Movie> list) {
super(context, 0 , list);
mContext = context;
moviesList = list;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull
ViewGroup parent) {
View listItem = convertView;
if(listItem == null)
listItem =
LayoutInflater.from(mContext).inflate(R.layout.list_item,parent,false);
Movie currentMovie = moviesList.get(position);
TextView name = (TextView) listItem.findViewById(R.id.textView_name);
name.setText(currentMovie.getmName());
TextView release = (TextView)
listItem.findViewById(R.id.textView_release);
release.setText(currentMovie.getmRelease());
return listItem;
}}
fragmentfour.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ekatechhp.pkmapplication.
fragment.FourFragment">
<ListView
android:id="@+id/movie_list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
list_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:textSize="20sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView_release"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/textView_name"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:textSize="20sp"
android:textColor="@color/colorAccent"/>