可能,这是重复的问题,但我没有找到解决方案我在 Adapter 类中使用日期选择器,每当我单击 TextView 时,日期选择器显示错误
Unable to add window -- token null is not for an application
我在 Stack Overflow 上搜索过,我找到了解决方案,但它只适用于某些设备,
private String dateDialouge(final BwViewHolder feedListRowHolder) {
DatePickerDialog datePickerDialog = new DatePickerDialog(activity, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateTime = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year;
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
feedListRowHolder.tv_date.setText(dateTime);
}
}, year, month, date);
//setDate = feedListRowHolder.tv_date.getText().toString();
datePickerDialog.getDatePicker().setMinDate(minDate);
datePickerDialog.getDatePicker().setMaxDate(maxDay); // 24 hours
datePickerDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
//WindowManager.LayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
datePickerDialog.show();
return dateTime;
}
当我使用窗口类型时 datePickerDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
它适用于牛轧糖,但不适用于某些设备。
当我使用
datePickerDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
它将显示错误 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application in adapter class
已取得权限
<uses-permission android:name="INTERNAL_SYSTEM_WINDOW "/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
看看我的构造器
public BoxServicesAdapter(Activity activity,Context context, List<BoxServicesBean> feedItemList, String service_id, String service_title) {
this.feedItemList = feedItemList;
this.mContext = context;
this.service_id = service_id;
this.service_title = service_title;
this.boxadapter = this;
this.activity=activity;}
最佳答案
WindowManager.LayoutParams.TYPE_TOAST
对于非系统应用程序,此常量在 API 级别 26 中已弃用。请改用 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
。
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
This constant was deprecated in API level 26. for non-system apps. Use
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
instead.
WindowManager.LayoutParams.TYPE_TOAST
需要 SYSTEM_ALERT_WINDOW 权限
。
关于android - 适配器类中的日期选择器显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48824837/