如何在viewholder recyclerview adapter中单击关闭底页?

gajydyqb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(381)

我想取消我的底片点击cardwiew在底片
这是我的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)

一旦单击,我想取消底部工作表并返回活动。
提前感谢=)

3qpi33ja

3qpi33ja1#

你在这里所做的不会像你期望的那样起作用:-

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

在这里您正在创建一个新的 bottomSheet 如此使用的对象 dismiss() 在这个物体上不起作用。相反,您需要一个接口,该接口将为您提供一个对bottomshett片段的回调,您在其中设置了recyclerview。在这个回调中,只需调用bottomsheet inbuild方法 dismiss() . 下面是关于s.o的答案,它显示了如何创建接口,该接口将为您提供对片段的回调。

相关问题