Android studio 使用AlertDialog后,无法删除LIstView中的选定项目

Android studio 使用AlertDialog后,无法删除LIstView中的选定项目,android-studio,android-listview,android-alertdialog,contextmenu,multiple-choice,Android Studio,Android Listview,Android Alertdialog,Contextmenu,Multiple Choice,我的问题是: 在我的应用程序中,我为我的ListView设置了ChoiceMode(CHOICE_MODE_MULTIPLE_MODE)和MultiChoiceModeListener方法,以允许用户使用上下文菜单删除列表中的项目。我已经在onActionItemClicked方法中添加了以下代码,一切正常: @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

我的问题是:

在我的应用程序中,我为我的ListView设置了ChoiceMode(CHOICE_MODE_MULTIPLE_MODE)和MultiChoiceModeListener方法,以允许用户使用上下文菜单删除列表中的项目。我已经在onActionItemClicked方法中添加了以下代码,一切正常:

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
        //Clear the list of selected item's id when the user exit the context menu bar.
        mSelectedItemIdList.clear();
    }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            switch (item.getItemId()){
                case R.id.menu_select_delete:
                    deleteSelectedItem();
                    mode.finish();
                    return true;
                default:
                    return false;
            }
        }

        private void deleteSelectedItem(){
    int totalRowDeleted = 0;

    if (!mSelectedItemIdList.isEmpty()){
        for (int i = 0; i < mSelectedItemIdList.size(); i++){
            long idInDatabase = mSelectedItemIdList.get(i);
            Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
            int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);

            if (rowDeleted != 0){
                totalRowDeleted++;
            }
        }
    }

    if (totalRowDeleted == 0){
        Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
        return;
    }

    Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();
}
应用程序没有崩溃,但是deleteSelectedItem()不再工作了!不知何故,程序无法到达方法内部for循环中的内容。也许我犯了一些简单的错误。有人能帮我吗?

我解决了这个问题

每次显示AlertDialog时都会调用onDestroyActionMode()方法。因此,我删除了onDestroyActionMode()中的代码,并添加了删除记录后清除列表的代码

private void deleteSelectedItem(){
int totalRowDeleted = 0;

if (!mSelectedItemIdList.isEmpty()){
    for (int i = 0; i < mSelectedItemIdList.size(); i++){
        long idInDatabase = mSelectedItemIdList.get(i);
        Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
        int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);

        if (rowDeleted != 0){
            totalRowDeleted++;
        }
    }
}

if (totalRowDeleted == 0){
    Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
    return;
}

Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();

//Clear the list of selected item's id after delete the records.
mSelectedItemIdList.clear();
private void deleteSelectedItem(){
int totalRowDeleted=0;
如果(!mSelectedItemIdList.isEmpty()){
对于(int i=0;i
}

private void deleteSelectedItem(){
int totalRowDeleted = 0;

if (!mSelectedItemIdList.isEmpty()){
    for (int i = 0; i < mSelectedItemIdList.size(); i++){
        long idInDatabase = mSelectedItemIdList.get(i);
        Uri selectedItemUri = ContentUris.withAppendedId(TimeEntry.CONTENT_URI, idInDatabase);
        int rowDeleted = getContentResolver().delete(selectedItemUri, null, null);

        if (rowDeleted != 0){
            totalRowDeleted++;
        }
    }
}

if (totalRowDeleted == 0){
    Toast.makeText(MainActivity.this, getString(R.string.delete_error_message), Toast.LENGTH_SHORT).show();
    return;
}

Toast.makeText(MainActivity.this, totalRowDeleted + " " + getString(R.string.delete_success_message), Toast.LENGTH_SHORT).show();

//Clear the list of selected item's id after delete the records.
mSelectedItemIdList.clear();