2010-03-01 40 views
2

我正在驗證AlertDialog,並且我想在AlertDialog顯示的頂部添加一個Toast。如何在AlertDialog上舉一個Toast?

我有這樣的代碼,但吐司顯示在活動

new AlertDialog.Builder(this).setTitle(R.string.contact_groups_add) 
       .setView(addView).setPositiveButton(R.string.ok, 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int whichButton) { 

           if (wrapper.getTitle().length()>0) 
           { 
            processAdd(wrapper); 
           } else { 
            Toast.makeText(getApplicationContext(), "Name is required", Toast.LENGTH_SHORT).show(); 
           } 
          } 
         }).setNegativeButton(R.string.cancel, 
         new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, 
            int whichButton) { 
           // ignore, just dismiss 
          } 
         }).show(); 

回答

6

而不是使用AdvertDialog.Builder的,你可以創建一個custom dialog它會像一個對話框,但實際上是一種正常的活動。你的敬酒應該在此之上正常繪製。

+0

這是做它最好的辦法我倒是imagane,在AlertDialog生成器生成的對話作爲活動的一部分,所以敬酒出現在隨後的活動中,至少我是這麼認爲發生 – 2010-03-01 14:50:54

+0

是啊,這發生,所以不可能在alertdialog上加註? – Pentium10 2010-03-01 15:09:55

+1

我不認爲AlertDialog.Builder爲您提供了這種控制級別。這是編寫簡單對話的一種方便方法,如果您需要更具體的內容,那麼通常您會編寫自己的對話活動。 – seanhodges 2010-03-01 23:11:19

3

我自己也有這個問題,當我想在對話框中顯示驗證消息。 seanhodges給出的答案可能是更清潔和更好的方法。但是單獨的活動對我來說並不實際,所以我想出了這個解決方案。

無論如何,你可以使用AlerDialog.Builder,並顯示一個敬酒。 如果您覆蓋要觸發烘烤的按鈕的OnClickListener,則可以在對話框頂部顯示烘烤。

一個例子;

public void showToastOnDialog(final Context context) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setTitle("Dialog title"); 
    builder.setMessage("Dialog message"); 
    builder.setPositiveButton(android.R.string.ok, new OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // Do nothing, you will be overriding this anyway 
     } 
    }); 
    builder.setNegativeButton(android.R.string.cancel, 
      new OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        // You can implement code here, because you wont be 
        // overriding this 
       } 
      }); 
    final AlertDialog dialog = builder.create(); 
    // Make sure you show the dialog first before overriding the 
    // OnClickListener 
    dialog.show(); 
    // Notice that I`m not using DialogInterface.OnClicklistener but the 
    // View.OnClickListener 
    dialog.getButton(Dialog.BUTTON_POSITIVE).setOnClickListener(
      new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        Toast toast = Toast.makeText(context, 
          "I`m a toast on top of a dialog.", 
          Toast.LENGTH_LONG); 
        toast.show(); 
        // Because you are overriding the OnClicklistener, the 
        // dialog will not auto dismiss 
        // after clicking 
        dialog.dismiss(); 
       } 
      }); 
} 
+0

這不適合我 – 2013-09-30 04:38:43