如何在点击ViewHolder RecyclerView Adapter上关闭Bottomsheet



我想在点击卡片时取消我的BottomSheet在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)

on单击我要取消底部工作表并返回"活动"。

提前感谢=(

您在这里所做的不会像您预期的那样工作:-

BottomSheetCall bottomSheetCall = new BottomSheetCall();
bottomSheetCall.dismiss();

在这里,您正在创建一个新的bottomSheet对象,因此在此对象上使用dismiss()将不起作用。相反,你需要一个接口,它将为你提供一个回调到你的底部Shett片段,你已经在那里设置了你的回收器视图。在该回调中,只需调用BottomSheet的内置方法dismiss()即可。下面是关于S.O的答案,它展示了如何创建接口,该接口将为您提供对Fragment的回调。

最新更新