(我不确定其他人是否都面临这个问题,但我确实如此)
我正在访问android.widget.TimePicker的setHour(int)
和getHour()
(以及分钟的getter和setter) - IntelliJ并没有抱怨他们的不存在,但是当我运行程序时它从我的手机(或模拟器)崩溃,我看到java.lang.NoSuchMethodError android.widget.TimePicker.getHour
的错误日志。 (其他分钟/小时的吸气/安装者包括在内)。
我尝试访问TimePicker类的定义(Ctrl + B),我意识到每个方法都包含一行:throw RuntimeException(" Stub");
那么这是什么呢?我该如何继续前进?
答案 0 :(得分:3)
IntelliJ并没有抱怨他们的不存在
这是因为您正在针对API级别23进行编译。
但是当我从我的手机(或模拟器)运行该程序时,它崩溃,我看到java.lang.NoSuchMethodError的错误日志android.widget.TimePicker.getHour
这是因为getHour()
was added in API Level 23,您的设备或模拟器运行的是Android 5.2或更低版本。
我没有使用IntelliJ,但它应该抱怨你的构建。在Eclipse和Android Studio中,您将从Lint收到错误,指示您正在调用getHour()
(23)中存在但您的compileSdkVersion
中不存在的方法minSdkVersion
) (无论你有什么设置,作为你愿意支持的最老的API级别。)
我尝试访问TimePicker类的定义(Ctrl + B),我意识到每个方法都包含一行:throw RuntimeException(" Stub")
这是因为它正在反编译编译时类路径中的android.jar
,它完全由存根实现组成,以满足 javac
编译器。在运行时,您的流程' VM将具有该实际实现的JAR版本。
我该如何继续前进?
可能会停止致电getHour()
,除非您只能在Android 6.0及更高版本的设备上使用此功能。