setBottomSheetCallback已被弃用。

24

在使用 ML Kit Firebase 开发对象检测应用程序时,我实现了底部工作表,但它不起作用,因此相机仍然集中在对象上而没有任何结果。 代码:

private void setUpBottomSheet() {
    bottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_sheet));
    bottomSheetBehavior.setBottomSheetCallback(
            new BottomSheetBehavior.BottomSheetCallback() {
                @Override
                public void onStateChanged(@NonNull View bottomSheet, int newState) {
                    Log.d(TAG, "Bottom sheet new state: " + newState);
                    bottomSheetScrimView.setVisibility(
                            newState == BottomSheetBehavior.STATE_HIDDEN ? View.GONE : View.VISIBLE);
                    graphicOverlay.clear();

                    switch (newState) {
                        case BottomSheetBehavior.STATE_HIDDEN:
                            workflowModel.setWorkflowState(WorkflowState.DETECTING);
                            break;
                        case BottomSheetBehavior.STATE_COLLAPSED:
                        case BottomSheetBehavior.STATE_EXPANDED:
                        case BottomSheetBehavior.STATE_HALF_EXPANDED:
                            slidingSheetUpFromHiddenState = false;
                            break;
                        case BottomSheetBehavior.STATE_DRAGGING:
                        case BottomSheetBehavior.STATE_SETTLING:
                        default:
                            break;
                    }
                }

                @Override
                public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                    SearchedObject searchedObject = workflowModel.searchedObject.getValue();
                    if (searchedObject == null || Float.isNaN(slideOffset)) {
                        return;
                    }

                    int collapsedStateHeight =
                            Math.min(bottomSheetBehavior.getPeekHeight(), bottomSheet.getHeight());
                    if (slidingSheetUpFromHiddenState) {
                        RectF thumbnailSrcRect =
                                graphicOverlay.translateRect(searchedObject.getBoundingBox());
                        bottomSheetScrimView.updateWithThumbnailTranslateAndScale(
                                objectThumbnailForBottomSheet,
                                collapsedStateHeight,
                                slideOffset,
                                thumbnailSrcRect);

                    } else {
                        bottomSheetScrimView.updateWithThumbnailTranslate(
                                objectThumbnailForBottomSheet, collapsedStateHeight, slideOffset, bottomSheet);
                    }
                }
            });

错误:setBottomSheetCallback已弃用

任何帮助将不胜感激

1个回答

52
请使用addBottomSheetCallbackremoveBottomSheetCallback代替。
请查看Android文档
来自文档:

setBottomSheetCallback

此方法已过时。请改用addBottomSheetCallback(BottomSheetCallback)和removeBottomSheetCallback(BottomSheetCallback)。


2
我无法理解,因为没有想法如何实现onStateChanged和OnSlide,它应该在addBottomSheetCallback(BottomSheetCallback)内部吗? - Fatima MarFr
4
好的,只需在您的代码中将setBottomSheetCallback文本替换为addBottomSheetCallback即可。 - Bob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接