onButtonClick против onMenuItemSelected ----- Не тот же результат - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть метод deleteDilaog (он отображает диалоговое окно с опцией «да» и «нет». При нажатии «да» он что-то делает, при нажатии «нет» - это диалоговое окно отмены), и он называется «купить, нажав кнопку» или при выборе элемента в меню параметров.,Проблема в том, что результат не тот же?Он работает нормально при выборе из меню, но при нажатии кнопки он просто отображает диалоговое окно, и независимо от того, что я нажимаю, ничего не происходит?

Кнопка:

private void RemoveAll(){

Button button=(Button) findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        deleteDialog();

    }
});

}

Пункт меню:

@Override
public boolean onMenuItemSelected(int id, MenuItem item) {
    mDeleteId=item.getItemId();
    switch(item.getItemId()) {
    case INSERT_ID:
        addItem();
        return true;
    case DELETE_ALL_ID:
        deleteDialog();
        break;

    }

    return super.onMenuItemSelected(id, item);
}

метод deleteDialog:

private void deleteDialog() {
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setMessage

(CONFIRM_DIALOG_STRING).setCancelable(false).setPositiveButton

(POSITIVE, new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int 

which) {
            switch (mDeleteId) {
            case DELETE_ALL_ID:
                mDbHelper.removeAllLists();
                fillData();
                break;
            case DELETE_ID: 
                Cursor c = (Cursor) 

getListView().getAdapter().getItem(which);
                mDbHelper.removeList

(mItemId);
                c.requery();
                break;

            }

        }
    }).setNegativeButton(NEGATIVE, new OnClickListener() 

{

        @Override
        public void onClick(DialogInterface dialog, int 

which) {

            dialog.cancel();
        }
    });
    AlertDialog alertDialog = dialog.create();
    alertDialog.show();

}

Ответы [ 3 ]

0 голосов
/ 14 февраля 2012

Похоже, проблема в mDeleteID.Он установлен в OnMenuItemSelected, но не в слушателе onClick button2.

Я предполагаю, что переключатель (mDeleteID) проваливается при нажатии кнопки.

0 голосов
/ 15 февраля 2012

В случае кнопки вы не устанавливаете значение в mDeleteId.

0 голосов
/ 14 февраля 2012

Во-первых, никогда не следует вызывать диалог, так как вы его закодировали.Сделайте нам Activity.onCreateDialog , чтобы инициализировать и поддерживать жизненный цикл диалога.

Действия предоставляют возможность управлять созданием, сохранением и восстановлением диалогов.Также см. OnCreateDialog (int), onPrepareDialog (int, Dialog), showDialog (int) и dismissDialog (int).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...