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'
我有几部手机,一部 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'