Как закрыть всплывающее меню при нажатии элемента в Android

Я использую всплывающее меню в своем коде. Это работает отлично. но когда я выбираю из него элемент, меню не закрывается. Я попробовал это . Но это не работает

вот мой код

 PopupMenu popup = new PopupMenu(this, edit1);
        //inflating menu from xml resource
        popup.inflate(R.menu.options_menu);
        popup.getMenu().add("one");
        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // if (item.getTitle().equals("one")) {
                Toast.makeText(MainActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();

        popup.dismiss();
        return false;
            }
        });
        //displaying the popup
        popup.show();

Пожалуйста, помогите мне.


person basha    schedule 22.01.2018    source источник
comment
return true; или переместите popup.dismiss(); перед возвратом.   -  person Vladyslav Matviienko    schedule 22.01.2018
comment
верните true в свой onMenuItemClick   -  person notTdar    schedule 22.01.2018


Ответы (2)


попробуйте этот код ниже, он будет работать для вас

 popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                // if (item.getTitle().equals("one")) {
                Toast.makeText(MainActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                popup.dismiss();

                return true;
            }
        });

и как я вижу ваши комментарии, если вы используете onTouchListener для EditText. просто измените его на onClickListener, и ваша проблема будет решена.

person Sachin    schedule 22.01.2018
comment
это не работает . снова та же проблема после четырехкратного нажатия кнопки исчезает. - person basha; 22.01.2018
comment
вам нужно указать идентификатор, если еще условие, тогда оно будет работать - person Sachin; 22.01.2018
comment
можете ли вы дать вам код menu.xml в вашем вопросе, чтобы я мог помочь вам с соответствующим кодом - person Sachin; 22.01.2018
comment
Мой файл меню пуст. На самом деле я добавил пункты меню как popup.getMenu().add(one); - person basha; 22.01.2018
comment
Я просто отлаживаю свой код, проблема на моей стороне. не знаю, почему мой метод вызывается 4 раза. проверю - person basha; 22.01.2018
comment
проверьте мой обновленный ответ и, как я вижу ваши комментарии, если вы используете onTouchListener для EditText. просто измените его на onClickListener, и ваша проблема будет решена. - person Sachin; 22.01.2018
comment
basha-onTouchListener отвечает как за посадку, так и за подъем, вам нужно заменить его на onClickListener, а затем использовать код, как я написал здесь, он решит вашу проблему - person Sachin; 22.01.2018
comment
Давайте продолжим это обсуждение в чате. - person Sachin; 22.01.2018
comment
Давайте продолжим обсуждение в чате. - person Sachin; 22.01.2018

Это должен быть кодовый блок. Возврат true показывает, что щелчок был обработан.

@Override
public boolean onMenuItemClick(MenuItem item) {
   // if (item.getTitle().equals("one")) {
   Toast.makeText(MainActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
   return true;
}
person Rohit5k2    schedule 22.01.2018
comment
не работает. после четырехкратного нажатия он закрывается. - person basha; 22.01.2018
comment
Тогда проблема в другом - person Rohit5k2; 22.01.2018
comment
на самом деле я использую прослушиватель onTouch для editText для отображения меню - person basha; 22.01.2018
comment
Я просто отлаживаю свой код, проблема на моей стороне. не знаю, почему мой метод вызывается 4 раза. проверю - person basha; 22.01.2018