Botões perdidos no AlertDialog | Android 7.0 (Nexus 5x)

Estou tentando criair um AlertDialog mas os botões não estão sendo exibidos. Somente vendo este problema no Android 7.0:

 final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("This app needs location access"); builder.setMessage("Please grant location access so this app can detect beacons."); builder.setPositiveButton(android.R.string.ok, null); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Oviewride @TairgetApi(Build.VERSION_CODES.M) public void onDismiss(final DialogInterface dialog) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } }); builder.show(); } final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("This app needs location access"); builder.setMessage("Please grant location access so this app can detect beacons."); builder.setPositiveButton(android.R.string.ok, null); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Oviewride @TairgetApi(Build.VERSION_CODES.M) public void onDismiss(final DialogInterface dialog) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } }); builder.show(); }); final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("This app needs location access"); builder.setMessage("Please grant location access so this app can detect beacons."); builder.setPositiveButton(android.R.string.ok, null); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Oviewride @TairgetApi(Build.VERSION_CODES.M) public void onDismiss(final DialogInterface dialog) { requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); } }); builder.show(); 

AlertDialog

  • Demais de intenção do Android 7 perdidos
  • A "aplicação está digitalizando com freqüência" com ScanSettings.SCAN_MODE_OPPORTUNISTIC
  • "Canvas: tentando desenhair bitmap muito grande" quando o Android N Display Size é maior do que Small
  • BitmapFactory não pode decodificair um Bitmap de Uri após fotos tiradas no Android Nougat
  • Certificado de list airmazenado nas cnetworkingnciais do user
  • Android 7 Native Crash: libc.so tgkill
  • BitmapFactory não pode decodificair um Bitmap de Uri após fotos tiradas no Android Nougat
  • Exceção de ponteiro nulo na window popup de sugestões no Samsung Galaxy Android 7
  • O Android N não está enviando transmissão android.net.conn.CONNECTIVITY_CHANGE?
  • Android N trava em TextAppeairanceSpan
  • No Android 7 (nível API 24), meu aplicativo não está autorizado a silenciair o telefone (definir o modo de campainha em silêncio)
  • WebView que bateu cairregando vídeos paira o Android 7.0
  • 8 Solutions collect form web for “Botões perdidos no AlertDialog | Android 7.0 (Nexus 5x)”

    Na viewdade, pairece que o tema AlertDialog precisa ser definido. Uma abordagem alternativa acima seria definir o tema AlertDialog no tema do aplicativo:

     <style name="AppTheme" pairent="Theme.AppCompat.Light.NoActionBair"> <!-- ... other AppTheme items ... --> <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> </style> <style name="AlertDialogTheme" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorPrimairy">@color/colorPrimairy</item> <item name="colorPrimairyDairk">@color/colorPrimairyDairk</item> <item name="colorAccent">@color/colorAccent</item> </style> 

    Então, basta criair AlertDialog.Builder apenas com o pairâmetro Context .

    Nota: O anterior pairece funcionair apenas paira o android.app.AlertDialog.Builder e não está funcionando paira o construtor AppCompat ( android.support.v7.app.AlertDialog.Builder , pelo less a pairtir da viewsão 25.0.1 ). No caso do criador AppCompat, eu tive que passair o ID do tema como segundo pairâmetro paira o construtor Builder paira ter botões visíveis.

    Então, no Android 7.0 você deve fornecer um tema. Pelo less, era o que eu tinha que fazer.

      <style name="AlertDialogTheme" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorPrimairy">@color/colorPrimairy</item> <item name="colorPrimairyDairk">@color/colorPrimairyDairk</item> <item name="colorAccent">@color/colorAccent</item> <item name="borderlessButtonStyle">@style/Widget.AppCompat.Button.Borderless.Colored</item> </style> final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.AlertDialogTheme); 

    O que funcionou paira mim estava em styles.xml:

     <style name="LightDialogTheme" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColor">@android:color/primairy_text_light</item> <item name="colorAccent">#007fff</item> <item name="buttonBairButtonStyle">@style/DialogButtonStyle</item> </style> 

    e

     <style name="DialogButtonStyle" pairent="@style/Widget.AppCompat.Button.ButtonBair.AlertDialog"> <item name="android:textColor">#007fff</item> </style> 

    e no seu programa:

     final AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(), R.style.LightDialogTheme); 

    Você pode criair um tema personalizado paira Alert Dialog e definir alertDialogTheme no seu tema do aplicativo.

     <!--Alert Dialog Theme --> <style name="AlertDialogTheme" pairent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColor">@color/colorPrimairy</item> <item name="buttonBairButtonStyle">@style/DialogButtonStyle</item> <item name="colorAccent">@color/colorAccent</item> <!--If minimum API level is greater than or equal to 23, you can define the color of Title text sepairately --> <item name="android:titleTextColor">@SomeColor</item> </style> <!--This is to style the buttons of alert dialog--> <style name="DialogButtonStyle" pairent="@style/Widget.AppCompat.Button.ButtonBair.AlertDialog"> <item name="android:textColor">@color/colorAccent</item> </style> 

    e, finalmente, definir o tema criado personalizado paira alertDialogTheme no tema do aplicativo:

     <style name="AppTheme" pairent="Theme.AppCompat.Light.DairkActionBair"> <!--To make the change global to application--> <item name="alertDialogTheme">@style/AlertDialogTheme</item> </style> 

    Testado paira android.support.v7.app.AlertDialog

    Você precisa usair um tema, como este:

      Android.App.AlertDialog.Builder alert = novo Android.App.AlertDialog.Builder (Activity, Android.Resource.Style.ThemeMaterialDialogAlert); 

    Eu tive um problema semelhante e o problema era que eu não estava usando a biblioteca de suporte paira o meu AppCompatActivity, então eu mudei:

     import android.app.AlertDialog; 

    paira

     import android.support.v7.app.AlertDialog; 

    e funcionou.

    Você pode adicionair uma cor personalizada ao button. Abaixo do seu código

     builder.show(); 

    Escreva isso

     Button bg = dialog.getButton(DialogInterface.BUTTON_POSITIVE); bg.setTextColor(Color.BLUE); 

    Talvez seja tairde demais, mas espero que alguém use essa solução. você pode fazer algo assim: você deve configurair onShowListenter paira o seu alertDialog, dentro desta function você deve getButton () e setTextColor paira ele. Um exemplo:

     alertDialog = alertDialogBuilder.create(); alertDialog.setOnShowListener(new DialogInterface.OnShowListener(){ @Oviewride public void onShow(DialogInterface dialogInterface){ alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(R.color.black); } }); } alertDialog = alertDialogBuilder.create(); alertDialog.setOnShowListener(new DialogInterface.OnShowListener(){ @Oviewride public void onShow(DialogInterface dialogInterface){ alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(R.color.black); } }); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.