Android 8.0 Oreo 中的 AlertDialog 缺少消息文本

AlertDialog in Android 8.0 Oreo missing message text

我有几部手机,一部 infinix hot note 4 运行 Android 6.0 Marshmallow 和一部 Nexus 6P 运行 最新最好的 Android 8.0 Oreo。

我正在测试一个应用程序,该应用程序仅允许用户在靠近特定位置时输入数据,我注意到在 Oreo 上显示了我在 AlertDialogs 中的 none 消息。它们显示为空白(或者可能用白色文本或其他颜色着色)。

我在非洲,我正在支持设备 运行 android 9 (旧手机从不扔掉,只是传下来用到过期) 所以 gradle 设置是
minSdkVersion 9
targetSdkVersion 22
compileSdkVersion 25
buildToolsVersion '25.0.0'

我附上了 Nexus 和 Infinix 对话框的屏幕截图。 任何人都知道如何解决这种行为?下面也是两个设备中使用的确切代码

提前感谢所有花时间查看此问题的人。

   private void showNotNearOutlet(ProximityToOutlet proximityToOutlet, String OutletName) {
    String strMsg = "";
    int intAllowedProximity = GSR.getSavedSettings.getAllowedProximityToOutletMeters();

    float floatDistanceFromOutlet = proximityToOutlet.getFltDistanceBetweenCurrentLocAndOutlet();
    String strDistance = String.valueOf(df.format(floatDistanceFromOutlet)) + "m";
    if (floatDistanceFromOutlet > 1000) {

        strDistance = df.format(floatDistanceFromOutlet / 1000) + "Km";
    }
    final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
    alertDialogBuilder.setTitle("Cannot start outlet!");
    if (floatDistanceFromOutlet != -99) { /*means we cant get a good location fix at the moment*/
        strMsg = "GPS shows your current location as being " + strDistance + " from " + OutletName + " .\n\nYou must be at least " + intAllowedProximity + " Meters near the Outlet to start it.";
    } else {
        strMsg = "Cannot Start outlet because your current GPS position is undetermined.\nTap on 'Locate Me' button and wait till you get a GPS Fix or Accuracy is within 20meters.\n\nTo start an Outlet you must be within " + intAllowedProximity + " meters of it.";
    }


    alertDialogBuilder.setCancelable(true);
    alertDialogBuilder.setIcon(R.drawable.red_gps_icon);
    alertDialogBuilder.setMessage(strMsg);
    alertDialogBuilder.setPositiveButton("Close", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {
            //fetchOutletsForSpinner();
            setSpinnerToSelectOutlet();
            dialog.dismiss();
        }

    });


    alertGPS = alertDialogBuilder.create();
    if (!MainActivity.this.isFinishing()) {
        //show dialog
        alertGPS.show();
        blnGPSAlertIsVisible = true;
    }


}

[Android Oreo(左)中缺少 AlertDialog 文本。有趣的是,8.0之前的版本缺少gps图标][1]1(右)

android.util.FloatMath 在 API 级别 22 中被弃用,请使用 java.lang.Math 代替 API>21。

同时将 compileSdkVersion 25 更改为 26,buildToolsVersion '25.0.0' 更改为 '26.0.2'