2014-07-17 2 views
1

Je dois insérer dans la vue AlertDialog une vue personnalisée avec des sous-éléments, comme EditText. Cela fonctionne bien, mais quand l'utilisateur clique sur le bouton OK d'AlertDialog, j'ai besoin d'obtenir les informations des sous-éléments, mais au lieu d'obtenir le texte que j'ai inséré dans l'IU, j'obtiens une chaîne vide ou un pointeur nul comme dans Log.e() dans du code.Se gonfle dans la vue personnalisée AlertDialog et obtient les informations saisies

AlertDialog:

final AlertDialog.Builder alert = new AlertDialog.Builder(context); 
alert.setTitle("Title"); 

alert.setView(getLayoutInflater().inflate(R.layout.sonidovideo, null)); 
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 


    EditText a = (EditText) findViewById(R.id.segundos); 
    EditText b = (EditText) findViewById(R.id.segundosFin); 
    EditText c = (EditText) findViewById(R.id.segundosInicio); 
    Spinner d = (Spinner) findViewById(R.id.calidades); 
    Spinner e = (Spinner) findViewById(R.id.detecciones); 


    Log.e("Is null", (a==null) + ""); //False 
    Log.e("No text",(a.getText().toString().compareTo("")==0) + ""); //True 

    Log.e("Is null", (b==null) + ""); //True 

    Log.e("Is null", (c==null) + ""); //True 

    Log.e("Is null", (d==null) + ""); //True 

    Log.e("Is null", (e==null) + ""); //True 



    } 
}); 

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int whichButton) { 

    dialog.cancel(); 
} 
}); 
alert.show(); 

R.layour.sonidovideo (sonidosvideo.xml):

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" > 

<EditText 
    android:id="@+id/segundosInicio" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/textView3" 
    android:ems="10" 
    android:inputType="numberDecimal" /> 

<EditText 
    android:id="@+id/segundos" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/textView2" 
    android:ems="10" 
    android:inputType="numberDecimal" > 
    <requestFocus /> 
</EditText> 



<Spinner 
    android:id="@+id/detecciones" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView4" 
    android:entries="@array/detecciones" /> 

<EditText 
    android:id="@+id/segundosFin" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/textView6" 
    android:ems="10" 
    android:inputType="numberDecimal" /> 

<Spinner 
    android:id="@+id/calidades" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/segundosFin" 
    android:entries="@array/calidades" /> 

Pour obtenir te sous articles que je aussi essayer cela, mais le résultat est le même

EditText a = (EditText) getLayoutInflater().inflate(R.layout.sonidovideo, null).findViewById(R.id.segundos); 

Toute aide est appréciée.

Répondre

0

Essayez cette

EditText a = (EditText) alert.findViewById(R.id.segundos); 
EditText b = (EditText) alert.findViewById(R.id.segundosFin); 
EditText c = (EditText) alert.findViewById(R.id.segundosInicio); 
Spinner d = (Spinner) alert.findViewById(R.id.calidades); 
Spinner e = (Spinner) alert. findViewById(R.id.detecciones); 

Puisque vous gonflez la mise en page dynamique, vous devez spécifier la mise en page qui a ces vues.

Questions connexes