2011-04-04 25 views
5

Estoy tratando de hacer un cuadro de diálogo personalizado, siguiendo el tutorial on the Android developer site, pero se bloquea cada vez que intento mostrar el cuadro de diálogo. Aquí está mi código:Diálogo de Android personalizado

Context mContext = getApplicationContext(); 
Dialog dialog = new Dialog(mContext); 

dialog.setContentView(R.layout.custom_dialog); 
dialog.setTitle("Custom Dialog"); 
dialog.show(); 

Y aquí es mi XML para el diseño:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    android:id="@+id/layout_root" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <Button 
     android:id="@+id/btnConfirm" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Add text" 
     android:layout_below="@+id/txtNewText" 
     android:layout_alignParentLeft="true"> 
    </Button> 
    <EditText 
     android:id="@+id/txtNewText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true"> 
    </EditText> 
</RelativeLayout> 
+4

Podría dar el registro de errores? – MByD

Respuesta

8

Considere el patrón:

private static final int MY_DIALOG= 0; 

protected Dialog onCreateDialog(int id) { 
    Dialog dialog; 
    switch(id) { 
     case MY_DIALOG: 
      dialog= getInstanceMyDialog(); 
      break; 
     default: 
      dialog = null; 
    } 
    return dialog; 
} 

private Dialog getInstanceMyDialog() { 
    final Dialog d= new Dialog(this); //<=====THIS 
    d.setContentView(R.layout.custom_dialog); 
    d.setTitle("Custom Dialog"); 
    return d; 
} 

JAL

+0

No entiendo .. – Elec0

+0

@ElecO El enlace que ha proporcionado utiliza este patrón para crear un cuadro de diálogo personalizado. La gran diferencia es que el tutorial llama a showDialog (MY_DIALOG) mientras que el código que publica utiliza dialog.show(). Tengo código de trabajo en: http://sites.google.com/site/jalcomputing/home/mac-osx-android-programming-tutorial/custom-password-dialog – JAL

3

Esto funcionó para mí: problem-creating-a-custom-dialog

utilizaron en lugar de getApplicationContext() cuando una instancia del diálogo:

Dialog dialog = new Dialog(this); 
+0

¿Por qué sucede esto? A veces quiero mostrar un cuadro de diálogo después de hacer clic en un botón. Si uso "this" en lugar de "getApplicationContext()" no funciona porque "esto" se refiere a "OnClickListener". Tengo que hacer una solución fea para usar "esto" ... – ffleandro

+0

no, no solo escribes ClassName.this of class que debería ser esto – endryha

Cuestiones relacionadas