2012-09-21 101 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