Как передать данные из контекстного меню в диалоговое окно оповещения в Android? - PullRequest
1 голос
/ 27 сентября 2011

Метод, описанный ниже, происходит, когда элемент в ListActivity долго нажимается.Идея состоит в том, чтобы удалить этот элемент из базы данных, и для этого мне нужно позвонить mNotesAdapter.deleteNote(ID).Что отлично работает, если я не использую AlertDialog;но я должен использовать один для подтверждения удаления.Но я не знаю, как передать информацию меню или сам идентификатор в метод onClick.

@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo)item.getMenuInfo();

    switch (item.getItemId()) {
        case R.id.contextmenu_item_remove:
            AlertDialog.Builder builder = new AlertDialog.Builder(this);

            builder.setMessage("Are you sure you want to delete this note?");

            builder.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    // VARIABLE menuInfo IS NOT ACCESSIBLE HERE, NOW WHAT?
                    mNotesAdapter.deleteNote(menuInfo.id);
                }
            });

            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });

            builder.show();

            return true;
    }

    return super.onContextItemSelected(item);
}

1 Ответ

2 голосов
/ 27 сентября 2011

У вас должна быть возможность доступа к ссылке, если вы пометите ее как final.

Чтобы ответить на другой вопрос в вашем комментарии, final не означает, что содержимое объекта не можетбыть изменен.Это просто означает, что ссылка не может перейти к другому объекту.

Когда вы вводите этот метод, вы сразу создаете новую ссылку на новый AdapterContextMenuInfo в первой строке.Затем вы создаете новый OnClickListener, который будет только действовать на тот единственный объект, который создает menuInfo.

...