android - 如何将数据从上下文菜单传递到 Android 中的警报对话框?

标签 android contextmenu android-alertdialog listactivity

当长按 ListActivity 中的项目时,会发生以下方法。我的想法是从数据库中删除该项目,为此我需要调用 mNotesAdapter.deleteNote(ID)。如果我不使用 AlertDialog,哪个工作正常;但我应该使用一个来进行删除确认。但我不知道如何将菜单信息或 ID 本身传递给 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);
}

最佳答案

如果您将其标记为final,您应该能够访问该引用。

要回答您评论中的另一个问题,final 并不意味着对象的内容不能更改。这只是意味着引用不能移动到另一个对象。

当您输入该方法时,您会立即在第一行中创建对新 AdapterContextMenuInfo 的新引用。然后,您将创建一个新的 OnClickListener,它将作用于 menuInfo 正在创建的那个对象。

关于android - 如何将数据从上下文菜单传递到 Android 中的警报对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7573630/

相关文章:

Android PubNub 未通过 FCM 接收推送通知

android - 未检测到我的 MotionEvent.ACTION_DOWN

android - 如何显示联系人列表中的号码?

macos - 使用 Cocoa 在 Finder 的上下文菜单中添加一个项目

javascript - 如何将 if 语句添加到对象 block

java - AlertDialog SingleChoiceItems 不起作用

android - Gradle ProductFlavors 引发错误 - 无法添加任务 ':assembleTest',因为具有该名称的任务已存在

c# - 使用 MVVM,如何将 XamDataGrid 的 SelectedItems 作为参数传递给 ContextMenu 引发的命令?

java - 异步任务的问题

java - 在 Android 中无法同时关闭 2 个 AlertDialog