Реализовать BottomSheet в приложении

Я пытаюсь внедрить BottomSheet в свое приложение. Я изучаю андроид. Я реализовал его в соответствии с инструкциями, приведенными на странице библиотеки здесь. Я использовал код 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)

Я также создал меню xml с именем grid_sheet в папке меню. Как заставить работать это меню?


person Rajubhai Rathod    schedule 29.06.2016    source источник
comment
какая библиотека используется??   -  person sJy    schedule 29.06.2016
comment
Привет ! @sJy Я добавил ссылку, о которой идет речь. Спасибо   -  person Rajubhai Rathod    schedule 29.06.2016


Ответы (3)


Ошибка связана с 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();
person sJy    schedule 29.06.2016
comment
Привет ! @sJy, это решило мою проблему с .setListener. Я создал меню в файле grid_sheet.xml, расположенном в папке меню. Если мое меню Facebook, то как я могу сделать его интерактивным? Спасибо - person Rajubhai Rathod; 29.06.2016
comment
Теперь это другой вопрос. Пункты в меню уже кликабельны. Вы можете поймать щелчок пункта меню BottomSheet в onSheetItemSelected(). - person sJy; 29.06.2016
comment
Привет ! Извините, это другой вопрос, но если у меня есть меню под названием facebook и я хочу открыть тост по клику facebook, мне нравится Это facebook, что мне делать? Я запутался и еще раз извините, что задаю вопрос за вопросом - person Rajubhai Rathod; 29.06.2016
comment
Пожалуйста, проверьте последнюю строку моего вопроса, пожалуйста, помогите решить ее. - person Rajubhai Rathod; 29.06.2016
comment
@RajubhaiRathod Обновлен код щелчка пункта меню. Замените R.id.share на те, которые вы указали в grid_sheet.xml. - person sJy; 29.06.2016

В new BottomSheet.Builder(QuoteViewActivity.this) передайте контекст вашей активности, сохраненный в методе onCreate, или во фрагменте, сохраненном в методе onAttach(Context mContext).

Надеюсь это поможет.

person Er. Kaushik Kajavadara    schedule 29.06.2016
comment
Привет ! @Эр. Каушик Каджавадара, не могли бы вы объяснить немного больше? Спасибо - person Rajubhai Rathod; 29.06.2016

Проблема здесь

 .setListener(QuoteViewActivity.this)

вы установилиListener на это, как это

.setListener(this)
person Harshad Pansuriya    schedule 29.06.2016
comment
Привет! @Ironman, я получаю ту же ошибку, что и метод setListener(BottomSheetListener) в типе BottomSheet.Builder неприменим для аргументов (новый View.OnClickListener(){}) - person Rajubhai Rathod; 29.06.2016
comment
Привет, @Ironman, в нем небольшой длинный код, поэтому я загрузил его сюда. Пожалуйста, проверьте wikisend.com/download/795838/QuoteViewActivity.java Спасибо. - person Rajubhai Rathod; 29.06.2016