这是基于this答案的问题。

我试图将字符串从RecyclerView.Adapter传递给片段。

在我的适配器中,添加了以下内容:

onItemClickListner onItemClickListner;

public void setOnItemClickListner(VideoAdapter.onItemClickListner onItemClickListner) {
    this.onItemClickListner = onItemClickListner;
}

public interface onItemClickListner{
    void onClick(String str);//pass your object types.
}


一旦适配器中的项目数量少于一个(适配器为空),我就传递以下字符串:

onItemClickListner.onClick("TESTING");


然后,在我的片段中添加以下内容:

//I do the following after setting my adapter
videoAdapter.setOnItemClickListner(new VideoAdapter.onItemClickListner() {
        @Override
        public void onClick(String str) {
            Toast.makeText(getActivity(), str, Toast.LENGTH_SHORT).show();
        }
    });


由于某种原因,字符串为空/空,并且崩溃指向onItemClickListner.onClick("TESTING");

有人可以看看我可能做错了什么吗?



编辑:

我在onItemClickListner.onClick("TESTING");内部调用OnMenuItemClickListener,如下所示:

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {

                case R.id.delete:

                    onItemClickListner.onClick("TESTING");

                return true;

}


我没有提供完整的片段,因为我只是在onCreateView中添加了以上内容。

最佳答案

你注意到了吗?根据您的参考资料url

onItemClickListner your_interface;

public void setOnItemClickListner(RecyclerViewAdpater.onItemClickListner onItemClickListner) {
    this.your_interface= onItemClickListner;
}


this.onItemClickListner = onItemClickListner
这就是自我分配。这可能是导致问题的原因。

此处your_interface正在初始化。我怀疑您的onItemClickListner尚未初始化。

因此,请尝试更改名称

10-08 18:50