无法完全关闭alertdialog

时间:2012-09-21 08:16:05

标签: android alertdialog

我有一个带有删除和取消功能的自定义alertdialog。删除按钮是删除当前选定的列表项。取消按钮应关闭alertdialog并返回列表..当我点击删除时,它将删除它,当我点击取消时,它将关闭alertdialog并转到列表。但是,当我单击后退按钮时,它会再次显示警告对话框。以下是我的提醒对话框的代码段:

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();

1 个答案:

答案 0 :(得分:1)

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

基本上,正在发生的事情是你开始一项新的活动,而旧的活动仍在那里,alertdialog仍然开放。

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

如果您更喜欢开始新活动,那么最好的办法是finish()当前的活动。