Texto de diálogo de Android 6.0 no aparece

He actualizado mi teléfono a Android 6.0 y tengo estos 2 problemas con diálogos:

1) Se muestra el título, pero los mensajes no son para el diálogo de alerta (SOLVED):

new AlertDialog.Builder(context).setTitle("Title").setMessage("Message"); 

2) También el título del fragmento de diálogo personalizado no se muestra (NO SOLUCIONADO):

  getDialog().setTitle("Title"); 

No había tal problema en pirulí o en versiones anteriores, el problema apareció sólo después de actualizar mi teléfono a la malvavisco.

¿Como resolver el problema?

Utilice el constructor con el tema para Lollipop y versiones más nuevas de android:

Tema oscuro

  AlertDialog.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Dialog_Alert); } else { builder = new AlertDialog.Builder(context); } 

Y para el tema de la Luz

  AlertDialog.Builder builder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog_Alert); } else { builder = new AlertDialog.Builder(context); } 

He encontrado algunas respuestas que dicen que debes utilizar lo siguiente en el tema de tu aplicación:

 <item name="android:alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

Aunque eso es correcto, no funcionaba en todos los lugares para mí. Eventualmente, me di cuenta de que en algunos lugares estaba usando el constructor regular AlertDialog y en otros lugares estaba usando el constructor de soporte. Si está utilizando el soporte AlertDialog, asegúrese de incluir también lo siguiente en su tema:

 <item name="alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

Apenas ponga esto en su archivo de los estilos dentro de su etiqueta del estilo del tema bajo y usted es bueno ir

 <item name="android:alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item> 

Respuesta para 2) , tenemos que llamar a setStyle() antes onCreateDialog() porque el theme se utiliza en onCreateDialog()

 @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setStyle(STYLE_NORMAL, android.R.style.Theme_Material_Light_Dialog_Alert); } Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.setTitle(R.string.dialog_title); return dialog; } 

Traté de solucionar este problema haciendo un estilo propio.

Su objeto de diálogo debe ser así y su estilo señalado a este cuadro de diálogo se escribirá a continuación

 new AlertDialog.Builder(new ContextThemeWrapper(Context, R.style.Dialog)) .setTitle("Title") .setMessage("Sample Message ...").show(); 

R.style.Dialog ::

 <style name="Dialog"> <item name="android:textColorPrimary">@color/primary_text</item> <item name="android:textColor">@color/primary_color</item> </style> 

Colores ::

 <color name="primary_text">#212121</color> <color name="primary_color">#2196f3</color> 

Finalmente la salida debe ser algo como esto

Nota : "android: textColorPrimary" va para el cuadro de diálogo setMessage y "android: textColor" va para el cuadro de diálogo setTitle; No utilizo setPositive y setNegative botón y oyente en mi objeto de diálogo, pero se puede ver en la imagen si desea puede hacer su propio objeto de diálogo.

 new AlertDialog.Builder(context) .setTitle("Delete entry") .setMessage("Are you sure you want to delete this entry?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // continue with delete } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do nothing } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); 

Espero que esto te ayudará………….

¡Sospecho que usted está terminando encima de mostrar el texto blanco en un fondo blanco! (Mirando la captura de pantalla, el ícono (i) no se muestra bien tampoco, lo que sugiere que fue diseñado para ser mostrado en un fondo distinto de blanco.

Puede utilizar el constructor public AlertDialog.Builder (Context context, int themeResId) para asegurarse de que está utilizando un tema específico para Theme_Material_Dialog su diálogo, donde el Theme_Material_Dialog es probablemente lo que desea.

Tal vez el color del texto principal sea el mismo que el color de fondo del diálogo, en ese caso en el uso de styles.xml (sólo un ejemplo):

 <style name="AlertDialog" parent="@android:style/Theme.Material.Light.Dialog.Alert"> <item name="android:textColor">#000000</item> </style> 

Y en la creación del diálogo:

 new AlertDialog.Builder( new ContextThemeWrapper(getContext(), R.style.AlertDialog)) ).setMessage("test"); 
 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the Builder class for convenient dialog construction AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(R.string.dialog_fire_missiles) .setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // FIRE ZE MISSILES! } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); // Create the AlertDialog object and return it return builder.create(); } 

Una vez comprobar esta esperanza esto funcionará …….

En mi caso todos los diálogos tenían el mismo color que las fuentes (título y mensaje). Lo que he hecho para arreglar este estado fue el cambio del atributo de color en mi tema. Copié el archivo del tema del xml en el `res / values-v22 'y fijo el color diferente para el malvavisco.

 <resources> <style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:textColorPrimary">@android:color/tertiary_text_dark</item> </style> </resources> 

O sólo para diálogos

 <resources> <style name="LywCompatTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:alertDialogTheme">@style/LywAlertDialogStyle</item> </style> <style name="LywAlertDialogStyle" parent="Base.Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/lyw_secondary_text_color</item> </style> </resources> 

Cuando utilice DialogFragment necesita

  1. Añadir estilo

    <style name="CustomDialog" parent="@style/Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">false</item> </style>

  2. En tu DialogFragment agrega getTheme

    public class CustomDialogFragment extends DialogFragment{ public int getTheme() { return R.style.CustomDialogFragment; } . . .

¡Y eso es! La esperanza ayuda.

  • Evitar que DialogFragment se rechace cuando se hace clic en el botón
  • Cómo crear un cuadro de diálogo con pestañas con Android que contiene fragmentos?
  • Establecer el color de la barra de estado desde DialogFragment
  • El texto extensible no funciona en el fragmento de diálogo
  • Android: Cómo tener dialogFragment a pantalla completa
  • Android dialogFragment "a veces" no muestra la vista web
  • ¿Debemos usar setTargetFragment ()? Pensé que los fragmentos no deberían comunicarse entre sí
  • Mostrando bloques de DialogFragments ICS
  • Configurar el tamaño de un DialogFragment
  • No se puede obtener DialogFragment transparente
  • OnCreateView Fragmento no llamado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.