在应用程序中实现 BottomSheet

Implement BottomSheet in Application

我正在尝试在我的应用程序中实施 BottomSheet。我正在学习android。我已经按照图书馆页面 here 中给出的说明实施了它。我使用了如下 java 代码。

findViewById(R.id.butShare).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new BottomSheet.Builder(QuoteViewActivity.this)
                .setSheet(R.menu.grid_sheet)
                .grid()
                .setTitle("Lets Some Fun")
                .setListener(QuoteViewActivity.this)
                .show();
            }
        });

但我收到类似

的错误
The method setListener(BottomSheetListener) in the type BottomSheet.Builder is not applicable for the arguments (QuoteViewActivity)

我还在菜单文件夹中创建了名为 grid_sheet 的菜单 xml。我怎样才能使该菜单起作用?

new BottomSheet.Builder(QuoteViewActivity.this) 中传递保存在 onCreate 方法中的 activity 上下文或保存在 onAttach(Context mContext) 方法中的片段中。

希望对您有所帮助。

问题就在这里

 .setListener(QuoteViewActivity.this)

你有这样的 setListener

.setListener(this)

错误与 setListener(QuoteViewActivity.this) 有关。 SetListener() 需要 BottomSheetListener 而不是 Activity 上下文。尝试 setListener(new BottomSheetListener()) 并覆盖下面给出的接口方法。

    new BottomSheet.Builder(MainActivity.this)
                    .setSheet(R.menu.menu)
                    .grid()
                    .setTitle("Lets Some Fun")
                    .setListener(new BottomSheetListener() {
                        @Override
                        public void onSheetShown(@NonNull BottomSheet bottomSheet) {

                        }

                        @Override
                        public void onSheetItemSelected(@NonNull BottomSheet bottomSheet, MenuItem menuItem) {
                                if(menuItem.getItemId() == R.id.share) {
                                Toast.makeText(MainActivity.this, "Share" , Toast.LENGTH_LONG).show();
                            }
                        }

                        @Override
                        public void onSheetDismissed(@NonNull BottomSheet bottomSheet, int i) {

                        }
                    })
                    .show();