访问 TimePickerDialog 的 NumberPicker 对象而不是

我正在尝试创建一个具有小时和分钟的自定义间隔的自定义,并设法通过使用此问题的TimePickerDialog答案来解决它。

问题是 Android Studio 显示以下警告:

不支持通过反射访问内部 API,并且可能无法在所有设备上或将来工作。使用反射访问隐藏/私有的 Android API 并不安全;它通常无法在其他供应商的设备上运行,并且可能会突然停止工作[...]

问题在第一行:

Class<?> classForid = Class.forName("com.android.internal.R$id");


Field timePickerField = classForid.getField("timePicker");

TimePicker mTimePicker = findViewById(timePickerField.getInt(null));

Field minuteField = classForid.getField("minute");

Field hourField = classForid.getField("hour");

NumberPicker minutePicker = mTimePicker.findViewById(minuteField.getInt(null));

NumberPicker hourPicker = mTimePicker.findViewById(hourField.getInt(null));

我需要一些访问这两个NumberPicker对象的替代方法。


阿晨1998
浏览 98回答 1
1回答

holdtom

我通过使用找到了解决方案Resources.getSystem().getIdentifier()。代码现在看起来像这样:TimePicker timePicker = findViewById(Resources.getSystem().getIdentifier(&nbsp; &nbsp; "timePicker",&nbsp;&nbsp; &nbsp; "id",&nbsp;&nbsp; &nbsp; "android"));NumberPicker minutePicker = timePicker.findViewById(Resources.getSystem().getIdentifier(&nbsp; &nbsp; "minute",&nbsp;&nbsp; &nbsp; "id",&nbsp;&nbsp; &nbsp; "android"));NumberPicker hourPicker = timePicker.findViewById(Resources.getSystem().getIdentifier(&nbsp; &nbsp; "hour",&nbsp;&nbsp; &nbsp; "id",&nbsp;&nbsp; &nbsp; "android"));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java