简体   繁体   中英

java.lang.NullPointerException: Error while using RecyclerView.Widget

I am trying to add a list of audio files to my fragment. I have also set the layout manager to recycler view. I have also added dependencies to gradle build

Here is the error:


java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View androidx.recyclerview.widget.RecyclerView.findViewById(int)' on a null object reference
        at com.example.musicplayer.AllSongs.onCreateView(AllSongs.java:35)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
       

I am trying to get all songs in my all songs fragment. Here is my code which shows error:

    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        recyclerView = recyclerView.findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        if (!(musicFiles.size() < 1))
        {
            musicAdapter = new MusicAdapter(getContext(),musicFiles);
            recyclerView.setAdapter(musicAdapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        }
        return inflater.inflate(R.layout.fragment_all_songs_tab, container, false);
    }

Try with

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_all_songs_tab, container, false);

        recyclerView = view.findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);
        musicFiles = new ArrayList();
        if (!(musicFiles.size() < 1))
        {
            musicAdapter = new MusicAdapter(getContext(),musicFiles);
            recyclerView.setAdapter(musicAdapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        }

        return view;
    }

Your app is crash at below line

 recyclerView.findViewById(R.id.recyclerView);

Do as per below

 onCreateView(.....){
 View v = inflater.inflate(R.layout.fragment_all_songs_tab, container, false);
 recyclerView = v.findViewById(R.id.recyclerView);
 ....
 ....
 return v ;
 }

the error is fixed here is the solution

What I have done:

earlier I was returning onCreateView function but after returning inflater in View my code was fixed and list of audio files was shown


 View view = inflater.inflate(R.layout.fragment_all_songs_tab, container, false);

        recyclerView = view.findViewById(R.id.recyclerView);
        recyclerView.setHasFixedSize(true);

            musicAdapter = new MusicAdapter(getContext(), musicFiles);
            recyclerView.setAdapter(musicAdapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), RecyclerView.VERTICAL, false));
        musicAdapter.notifyDataSetChanged();

            return view;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM