尝试在空对象引用上调用虚拟方法'boolean android.os.Handler.postDelayed(java.lang.Runnable,long)'

Bog*_*iel 1 android android-studio android-recyclerview

我一直在关注此页面,将内容添加到Endless Scroll RecyclerView中,底部带有ProgressBar,我认为我做对了所有事情,但是由于某种原因,我回到了这一行onLoadMoreListener.onLoadMore();

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.os.Handler.postDelayed(java.lang.Runnable, long)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

我知道有很多有关空指针错误的文章,但是该行在if语句中,如果为空则不应执行。

if (onLoadMoreListener != null) {
                        onLoadMoreListener.onLoadMore();
                    }
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?我应该发布什么代码来帮助解决问题?

mAdapter.setOnLoadMoreListener(new MyAdapter.OnLoadMoreListener() {
            @Override
            public void onLoadMore() {
                //add progress item
                myDataset.add(null);
                mAdapter.notifyItemInserted(myDataset.size() - 1);

                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //remove progress item
                        myDataset.remove(myDataset.size() - 1);
                        mAdapter.notifyItemRemoved(myDataset.size());
                        MyRecyclerItems gridItem= new MyRecyclerItems();
                        gridItem.setAbout("Test");
                        gridItem.setEmail("tesssst@gmail.com");
                        myDataset.add(0,gridItem);
                        mAdapter.notifyItemInserted(myDataset.size());
                        mAdapter.setLoaded();
                    }
                }, 2000);
                System.out.println("load");
            }
        });
Run Code Online (Sandbox Code Playgroud)

小智 5

此错误意味着处理程序为空。

只需在调用post方法之前初始化处理程序对象,如下所示:

handler=new Handler();
Run Code Online (Sandbox Code Playgroud)

  • 你救了我的命。谢谢 (2认同)