这是基于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
尚未初始化。因此,请尝试更改名称