Im ussing a bottomSheet inside a fragment. Im receiving the must implement FilterListenerBottomSheet error
, even though im acctually implementing the interface as you can see bellow. May the error be on the onAttach function?
What am i missing here?
Is it possible to implement BottomSheet inside a fragment rigth? Thanks.
FilterBottomSheet.java :
public class FilterBottomSheet extends BottomSheetDialogFragment {
private FilterListenerBottomSheet filterListener;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.bottom_sheet_filter, container, false);
Button btnTodos = v.findViewById(R.id.btn_all);
Button btnCuchillos = v.findViewById(R.id.btn_cuchillo);
Button btnCuchillas = v.findViewById(R.id.btn_cuchillas);
Button btnTenedores = v.findViewById(R.id.btn_tenedores);
Button btnChairas = v.findViewById(R.id.btn_chairas);
Button btnTrinchetes = v.findViewById(R.id.btn_trinchetes);
btnTodos.setOnClickListener(v12 -> {
filterListener.onButtonClickedFilter("Todos");
dismiss();
});
btnCuchillos.setOnClickListener(v12 -> {
filterListener.onButtonClickedFilter("Cuchillos");
dismiss();
});
btnCuchillas.setOnClickListener(v1 -> {
filterListener.onButtonClickedFilter("Cuchillas");
dismiss();
});
btnTenedores.setOnClickListener(v1 -> {
filterListener.onButtonClickedFilter("Tenedores");
dismiss();
});
btnChairas.setOnClickListener(v1 -> {
filterListener.onButtonClickedFilter("Cuchillas");
dismiss();
});
btnTrinchetes.setOnClickListener(v1 -> {
filterListener.onButtonClickedFilter("Trinchetes");
dismiss();
});
return v;
}
public interface FilterListenerBottomSheet {
void onButtonClickedFilter(String filterProduct);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
filterListener = (FilterListenerBottomSheet) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString()
+ " must implement FilterListenerBottomSheet");
}
}
}
HomeFragment:
public class HomeFragment extends Fragment implements ProductsOnCustomClickListener, FilterBottomSheet.FilterListenerBottomSheet {
private TextView tvFilter;
public HomeFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getData();
}
public void getData(){...}
private void rvproducts(){...}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
rvProducts = v.findViewById(R.id.rv_products);
ivUserPhoto = v.findViewById(R.id.iv_user_photo);
tvFilter = v.findViewById(R.id.tv_filter);
rvproducts();
tvFilter.setOnClickListener(v1 -> {
FilterBottomSheet filterBottomSheet = new FilterBottomSheet();
filterBottomSheet.show(getActivity().getSupportFragmentManager(),"filterBottomSheet");
});
return v;
}
@Override
public void onItemClick (Product product, int position) {}
@Override
public void onButtonClickedFilter(String filterProduct) {
filter = filterProduct;
tvFilter.setText(filter);
}
}