2011-04-06 6 views
0

J'utilise un fichier de disposition pour afficher un dialogue. Mon fichier xml estandroid Alerte de dialogue

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:orientation="vertical"> 
    <EditText android:id="@+id/dialogEditText" android:text="Enter Your Text Here" android:layout_height="wrap_content" android:layout_width="match_parent"></EditText> 
    <DatePicker android:id="@+id/datPicker" android:layout_height="wrap_content" android:layout_width="match_parent" ></DatePicker> 
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> 
    <Button android:text="Add" android:id="@+id/dialogAddBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button> 
    <Button android:text="Cancel" android:id="@+id/dialogCancelBtn" android:layout_width="200px" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></Button> 
    </LinearLayout> 
</LinearLayout> 

Je veux faire quelque chose lorsque l'utilisateur clique sur « OK » ou sur le bouton Annuler. J'ai donc créé des gestionnaires anonymes pour ces boutons. Mon code est

LayoutInflater inflater = LayoutInflater.from(obj); 
      View inflatedView1= inflater.inflate(R.layout.dialog_view,null); 

      final Dialog d= new Dialog(obj); 
      final Window window= d.getWindow(); 
      window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 
      window.setTitle("Add Item"); 
      window.setContentView(R.layout.dialog_view); 

      final EditText input= (EditText) inflatedView1.findViewById(R.id.dialogEditText); 
      Button okBtn= (Button)inflatedView1.findViewById(R.id.dialogAddBtn); 
      okBtn.setOnClickListener(new OnClickListener() { 

        public void onClick(View v) { 
         Toast msg= Toast.makeText(obj.getApplicationContext(),"Hello",Toast.LENGTH_LONG); 
         msg.show(); 
        } 
       }); 

      Button cancelBtn= (Button) inflatedView1.findViewById(R.id.dialogCancelBtn); 
      cancelBtn.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) { 
        d.dismiss(); 
       } 
      }); 
      d.show(); 

Lorsque je clique sur "Ok" ou "Annuler", rien ne se passe. Je ne suis pas capable de comprendre pourquoi cela arrive. S'il vous plaît me suggérer une solution.

Répondre

1

vous configurez les gestionnaires d'événements sur votre point de vue gonflé, mais en même réglage de la vue du contenu à votre mise en page simple:

window.setContentView(R.layout.dialog_view); 

changer juste cette ligne

window.setContentView(inflatedView1); 

Ou, peut-être meilleure approche sans utiliser l'inflateur mise en page serait d'utiliser

d.setContentView(R.layout.dialog_view); 

Et puis setti ng les gestionnaires d'événements via

Button okBtn = (Button) d.findViewById(R.id.dialogAddBtn); 
okBtn.setOnClickListener(... 

Michael

+0

Merci ami, je suis très reconnaissant à vous. En fait, je suis nouveau sur Android. Merci frère ....... –

+0

Eh bien, moi aussi: D Mais une fois que vous tombez sur ces petites choses, vous vous en souvenez;) –

Questions connexes