我在recyelerview.viewholder类的onClick()方法中尝试了如下.
示例中使用的SampleDialogFragment扩展了DialogFragment.
@Override public void onClick(View v) { SampleDialogFragment df= new SampleDialogFragment(); df.show(v.getContext().getSupportFragmentManager(),"Dialog"); }
我在v.getContext().getSupportFragmentManager()面临问题.我无法调用getSupportFragmentManager().
我也试过如下.
@Override public void onClick(View v) { SampleDialogFragment df= new SampleDialogFragment(); SampleActivity activity = new SampleActivity(); df.show(activity.getSupportFragmentManager(),"Dialog"); }
SampleActivity是回收器视图附加的活动.它没有显示错误.当我运行应用程序并崩溃.
日志显示活动已经破坏.
有解决方案吗
解决方法
正确的方法是使用接口.
public interface OnItemClickListener { void onItemClicked(View v); }
public class Yourlistadapter extends RecyclerView.Adapter<...> //your code private OnItemClickListener listener; public Yourlistadapter(OnItemClickListener listener /*your additional parameters*/) { this.listener = listener; //... } @Override public void onClick(View v){ listener.onItemClicked(View v); } }
您必须从SampleActivity传递OnItemClickListener接口实例
并让它在您的SampleActivity中实现它
public class SampleActivity extends FragmentActivity implements OnItemClickListener { @Override public void onItemClicked(View v) { SampleDialogFragment df= new SampleDialogFragment(); df.show(getSupportFragmentManager(),"Dialog"); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。