2012-09-21 97 views
1

我有一个定制的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(); 
+0

alert2.show()的范围是什么?当您导航到上一页时,它会再次调用。 – 2012-09-21 08:20:45

+0

如何使后退按钮不再调用alertdialog? – omi0301

+0

这很奇怪。我认为'abuilder.setCancelable(false)'的全部意思是防止后退按钮影响对话框! – manavo

回答

1

Aaaah,我现在看到它。当你点击按钮时,你开始一个新的活动,看起来它实际上是与你现在一样的活动。

所以基本上,发生了什么是你开始一个新的活动,而旧的仍然存在,alertdialog仍然打开。

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

如果您确实喜欢开始新的活动,那么最好的做法是到当前的finish()

+0

谢谢..我用完();在我的意图中间..现在就开始工作.. – omi0301

+0

使用该工具完成了包括当前活动的alertdialog,但因为意图而回到当前活动。 – omi0301

0

只需按照这个tutorial 我想你是不是取消对话框。

+0

我的自定义alertdialog没有一个正面或负面的按钮。它使用布局中的2个按钮进行自定义..并通过setview方法显示。 – omi0301