2012-02-25 220 views
1

我試圖展示一個可自定義的對話框。該對話框包含3個edittext和一個timepicker。當我按下屏幕上的按鈕時,我想顯示這個對話框。我看着谷歌教程,並嘗試編寫代碼。但是,當我在inflater中使用根佈局作爲正在按下按鈕的佈局時,它會在按鈕下添加對話框。當我在dialog_xml中使用根佈局時,該按鈕不起作用。 該代碼的一部分在下面。你有什麼想法我如何以正確的方式做到這一點?自定義對話框Android

Button ekleButton; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.haphatirlatici); 

     // After creating the activity setting other things for running 
     ekleButton = (Button) findViewById(R.id.EkleButton); 
     ekleButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      // Dialog icin yerlesimler 

     AlertDialog.Builder builder; 
     AlertDialog alertDialog; 

     Context mContext = getApplicationContext(); 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.ekle_dialog, 
             (ViewGroup) findViewById(R.id.Ekle_Layout)); 

     builder = new AlertDialog.Builder(mContext); 
     builder.setView(layout); 
     alertDialog = builder.create(); 

     } 
    }); 

在這之後我編輯代碼並添加兩個按鈕。我想讓警報對話框的結果顯示出來。 我寫的代碼如下。

公共類HapHatirlatici延伸活動{

Button ekleButton; 
boolean eklendiMi; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.haphatirlatici); 

    // After creating the activity setting other things for running 
    ekleButton = (Button) findViewById(R.id.EkleButton); 
    eklendiMi = false; 
    ekleButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     View layout = getLayoutInflater().inflate(R.layout.ekle_dialog, null);        
     AlertDialog.Builder builder = new AlertDialog.Builder(HapHatirlatici.this); 
     builder.setPositiveButton(R.string.ekle,new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       eklendiMi = true; 
      } 
     }); 
     builder.setNegativeButton(R.string.vazgec, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       eklendiMi = false; 
      } 
     }); 
     builder.setView(layout); 
     AlertDialog alertDialog = builder.create(); 
     alertDialog.setTitle("Ilac Ekleme"); 
     alertDialog.show(); 


     } 
    }); 
} 
public boolean databaseEkle() 
{ 
    boolean sonuc = false; 
    return sonuc; 
} 

} 

回答

1

你忘了alertDialog.show();實際顯示你剛剛建立的對話。

此外,您的代碼可以簡化爲:

Button ekleButton; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.haphatirlatici); 

    // After creating the activity setting other things for running 
    ekleButton = (Button) findViewById(R.id.EkleButton); 
    ekleButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      View layout = getLayoutInflater().inflate(R.layout.ekle_dialog, null);        
      AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityClass.this); 
      builder.setView(layout); 
      AlertDialog alertDialog = builder.create(); 

      // this is what you forgot: 
      alertDialog.show(); 
     } 
    }); 
} 

當然,你的實際活動名稱替換YourActivityClass

+0

謝謝:)這是工作.. – 2012-02-25 19:18:14

+0

我編輯的問題,你可以看看它。 – 2012-02-25 19:45:28