【问题标题】:java.lang.NullPointerException: Error while using RecyclerView.Widgetjava.lang.NullPointerException:使用 RecyclerView.Widget 时出错
【发布时间】:2020-07-03 13:52:39
【问题描述】:

我正在尝试将音频文件列表添加到我的片段中。我还将布局管理器设置为回收站视图。我还为 gradle build 添加了依赖项

这是错误:


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)
       

我正在尝试在我的所有歌曲片段中获取所有歌曲。 这是我显示错误的代码:

    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);
    }

【问题讨论】:

    标签: java android android-recyclerview nullpointerexception


    【解决方案1】:

    您的应用在下面一行崩溃

     recyclerView.findViewById(R.id.recyclerView);
    

    按照以下方法进行操作

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

    【讨论】:

      【解决方案2】:

      试试

       @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;
          }
      

      【讨论】:

      • 我已经尝试过了,但是“java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on an null object reference”弹出此错误
      • @Mad_Flasher_oo7 musicFiles=new ArrayList();
      • @Mad_Flasher_oo7 你可以
      • 非常感谢它的工作,但它的空 logcat 显示没有连接适配器你能帮我吗?
      【解决方案3】:

      这里修复了错误是解决办法

      我做了什么:

      之前我返回onCreateView 函数,但在View 返回inflater 后,我的代码已修复并显示音频文件列表

      
       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;
      
      

      【讨论】:

      • 在没有解释的情况下提供代码块是非常反教育的。请提供更多信息是什么问题
      • 我没有太多的解释知识,但我会尽力解释我为修复代码所做的工作
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多