android - 无法完全关闭警报对话框

标签 android android-alertdialog

我有一个带有删除和取消功能的自定义警报对话框。删除按钮是删除当前选中的列表项。取消按钮应关闭警报对话框并返回列表。当我单击删除时,它会删除它,当我单击取消时,它会关闭警报对话框并转到列表。但是,当我单击后退按钮时,它会再次显示警报对话框。这是我的警报对话框的代码 fragment :

LayoutInflater inflater = LayoutInflater.from(context);
            View v = inflater.inflate(R.layout.grocerylistdelete, null);

            AlertDialog.Builder abuilder = new AlertDialog.Builder(
                    context);
            abuilder.setView(v);
            TextView tvStatement = (TextView)   v.findViewById(R.id.textViewStatementDelete);
            tvStatement.setTypeface(bold);
            tvStatement.setText("Are you sure you want to delete"+" "+mCursor.getString(mCursor.getColumnIndex(DBAdapter.KEY_ITEM))+"?");


            Button delete = (Button) v.findViewById(R.id.buttonDelete);
            delete.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {

                    Cursor c = db.getAllGroceries();
                    c.moveToPosition(info.position);
                    String id = c.getString(c.getColumnIndex(DBAdapter.ROW_ID));
                    db.open();
                    db.deletegrocery(Long.parseLong(id)); 
                    c.close();

                    Toast toast = Toast.makeText(GroceryList.this, "Item Deleted Successfully", 5000);
                    toast.show();
                    Intent i = new Intent(getApplicationContext(), GroceryList.class);
                    fillData();
                    startActivity(i);

                }
            });
                Button canceldelete = (Button) v.findViewById(R.id.buttonCancelDelete);
                canceldelete.setOnClickListener(new OnClickListener() {

                    public void onClick(View v) {
                        Intent i = new Intent(getApplicationContext(), GroceryList.class);
                        startActivity(i);

                    }
                });

                abuilder.setCancelable(false);
                AlertDialog alert2 = abuilder.create();
                alert2.show();

最佳答案

啊啊啊,我现在明白了。当您单击按钮时,您将启动一个新 Activity ,它看起来实际上与您现在的 Activity 相同。

所以本质上,发生的事情是你开始了一个新的 Activity ,而旧的 Activity 仍然存在,警报对话框仍然打开。

相反,您可以刷新当前列表中的数据,而无需开始新的 Activity 。为此,您可以在有人单击后使用 dismiss() 方法隐藏 AlertDialog(而不是启动新 Activity )。

如果您确实喜欢开始一项新 Activity ,那么最好的办法是finish()当前 Activity 。

关于android - 无法完全关闭警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12526683/

相关文章:

java - 按下后退按钮时自定义警报对话框消失

javascript - 为什么 deviceready 的事件监听器没有在我的手机上触发?

java - 这是在 MainActivity 中初始化 SQLite 的正确方法吗?

android - Jquery-Mobile 和 Css 不能使用 PhoneGap Cordova 为 android 工作/加载?

android - 普通字体在某些设备上显示为斜体。为什么以及如何解决?

android - 为警报对话框项设置自定义字体的字体

java - AlertDialog 使用 EditText 强制关闭

java - Gradle同步失败: Could not determine Java version provide fix?

java - 具有自定义布局的 AlertDialog 未显示

android - 从 bottomSheetDialogFragment 显示或关闭 alertDialog 时如何避免闪烁/闪烁