@gibsonen

AlertDialog срабатывает только со второго раза, почему?

Здравствуйте , проблема такая:
У меня есть кнопка в пункте меню, после нажатия которой должен открываться AlertDialog. Но при первом нажатии на кнопку ничего не происходит (AlertDialog не срабатывает) , AlertDialog срабатывает только при втором нажатии на кнопку.

Что это может быть? Прилагаю ниже код обработки этой кнопки из пункта меню:

public void settingCount(MenuItem item) {
        item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                LayoutInflater layoutInflater = LayoutInflater.from(context);
                View view = layoutInflater.inflate(R.layout.setting_dialog, null);
                AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
                dialogBuilder.setView(view);
                final EditText editTextString = (EditText) view.findViewById(R.id.editTextDialogString};    
                dialogBuilder
                        .setCancelable(false)
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            ///.....///
                        })
                        .setNegativeButton("Отмена",
                                new DialogInterface.OnClickListener(){
                                   ///.....////
                                });
                AlertDialog alertDialog = dialogBuilder.create();
                alertDialog.show();
                return true;
            }
        });
    }
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
В комментарии ты показал, как вызывается метод settingCount:
<item
    ...
    android:onClick="settingCount" />

Тут и заключается проблема. Метод settingCount вызывается первым нажатием, в этом методе добавляется ещё один обработчик и только потом все последующие нажатия на кнопку уже обрабатываются им.

Замени код метода на это:
public void settingCount(MenuItem item) {
                LayoutInflater layoutInflater = LayoutInflater.from(context);
                View view = layoutInflater.inflate(R.layout.setting_dialog, null);
                AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
                dialogBuilder.setView(view);
                final EditText editTextString = (EditText) view.findViewById(R.id.editTextDialogString};    
                dialogBuilder
                        .setCancelable(false)
                        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            ///.....///
                        })
                        .setNegativeButton("Отмена",
                                new DialogInterface.OnClickListener(){
                                   ///.....////
                                });
                AlertDialog alertDialog = dialogBuilder.create();
                alertDialog.show();
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы