Я хочу закрыть свой 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)
onClick Я хочу закрыть Bottomsheet и вернуться к Activity.
Заранее спасибо =)
то, что вы сделали здесь, не будет работать так, как вы ожидаете: -
BottomSheetCall bottomSheetCall = new BottomSheetCall();
bottomSheetCall.dismiss();
Здесь вы создаете новый объект bottomSheet
, поэтому использование dismiss()
для этого объекта не сработает. Вместо этого вам нужен интерфейс, который предоставит вам обратный вызов для вашего фрагмента bottomShett, где вы настроили свой recyclerView. И в этом обратном вызове вам нужно просто вызвать встроенный метод BottomSheet dismiss()
. Вот ответ на SO, который показывает, как вы можете создать этот интерфейс, который обеспечит вам обратный вызов для вашего фрагмента.
Опять вы делаете то же самое. Ссылка в ответе ясно показывает, как вы можете получить обратный вызов элемента для вашего фрагмента/активности. Вам нужно вызвать dismiss()
в самом фрагменте. Также нет необходимости делать это BottomSheetCall bottomSheetCall = new BottomSheetCall();
, что вы сделали в своем onClickListener. Вам просто нужно вызывать dismiss()
в самом фрагменте всякий раз, когда вызывается itemClickListener
.
Теперь я, наконец, сделал, спасибо
Пожалуйста, проголосуйте за ответ. Если это поможет вам, чтобы другие могли легко найти его.
Я новичок в StackOverflow, и у меня 5 баллов репутации, чтобы проголосовать за ответ, мне нужно 15 баллов репутации, после получения 15 в будущем я сделаю это. Большое спасибо
Не беспокойся. Рад помочь дружище!
как вы сказали, я сделал, но все еще получаю ту же ошибку, пожалуйста, проверьте код, я отредактировал вопрос