为了账号安全,请及时绑定邮箱和手机立即绑定

访问 TimePickerDialog 的 NumberPicker 对象而不是

访问 TimePickerDialog 的 NumberPicker 对象而不是

阿晨1998 2023-10-13 09:35:16
我正在尝试创建一个具有小时和分钟的自定义间隔的自定义,并设法通过使用此问题的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对象的替代方法。
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我通过使用找到了解决方案Resources.getSystem().getIdentifier()。


代码现在看起来像这样:


TimePicker timePicker = findViewById(Resources.getSystem().getIdentifier(

    "timePicker", 

    "id", 

    "android"

));


NumberPicker minutePicker = timePicker.findViewById(Resources.getSystem().getIdentifier(

    "minute", 

    "id", 

    "android"

));


NumberPicker hourPicker = timePicker.findViewById(Resources.getSystem().getIdentifier(

    "hour", 

    "id", 

    "android"

));


查看完整回答
反对 回复 2023-10-13
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信