java - 如何在 ViewHolder RecyclerView 适配器中单击时关闭底部表?
问题描述
我想在 BottomSheet 中单击 cardView 时关闭我的 BottomSheet
这是我的 onBindViewHolder 代码
class Viewholder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TextView num_name;
private TextView call_type;
private TextView call_duration;
public Viewholder(@NonNull View itemView) {
super(itemView);
num_name = itemView.findViewById(R.id.name_number);
call_type = itemView.findViewById(R.id.call_type_txt);
call_duration = itemView.findViewById(R.id.call_duration_txt);
itemView.setOnClickListener(this);
}
private void setData(String name_num, String call_typ, String call_dur){
num_name.setText(name_num);
call_type.setText(call_typ);
call_duration.setText(call_dur);
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"clicked", Toast.LENGTH_SHORT).show();
BottomSheetCall bottomSheetCall = new BottomSheetCall();
bottomSheetCall.dismiss();
}
}
我收到此错误
java.lang.IllegalStateException: Fragment BottomSheetCall{31fd510 (dbba722a-e3f4-46d4-826c-f31cbc221bd6)} not associated with a fragment manager.
at androidx.fragment.app.Fragment.requireFragmentManager(Fragment.java:910)
at androidx.fragment.app.DialogFragment.dismissInternal(DialogFragment.java:245)
at androidx.fragment.app.DialogFragment.dismiss(DialogFragment.java:202)
at com.google.android.material.bottomsheet.BottomSheetDialogFragment.dismiss(BottomSheetDialogFragment.java:47)
at com.bizcure.waessentials.ui.main.CallAdapter$1.onClick(CallAdapter.java:53)
onClick 我想关闭 Bottomsheet 并返回 Activity。
提前谢谢你=)
解决方案
你在这里所做的不会像你期望的那样工作:-
BottomSheetCall bottomSheetCall = new BottomSheetCall();
bottomSheetCall.dismiss();
在这里,您正在创建一个新bottomSheet
对象,因此dismiss()
在此对象上使用将不起作用。相反,您需要一个接口,该接口将为您提供对设置 recyclerView 的 bottomShett 片段的回调。在该回调中,您只需调用 BottomSheet inbuild method 即可dismiss()
。这是关于 SO 的答案,它显示了如何创建该接口,该接口将为您提供对 Fragment 的回调。
推荐阅读
- c++ - 如何在编译时获取指向非静态数据成员的指针的对象类型?
- c# - 如何从以编程方式生成的 SSIS 包中获取 GraphLayout XML
- c - 如何防止 Atmel Studio gcc 6.3.1 将 4 字节 memcmp() 优化为 4 字节直接比较?
- javascript - 无法访问 React 函数组件中的函数内部状态
- dart - 如何获得一个链接列表来保存 String 和 List 对象?
- xml - 如何恢复渐变背景上的波纹效果
- oop - 是否可以在 Kotlin 接口中编写 equals 方法的默认实现?
- javascript - 如何每分钟触发一次 React js 组件的重新渲染?
- macos - 声明 MacOS 应用程序的 Metal 支持要求
- android - 无法获取 Android 广告 ID