Android TimePicker 方法是存根
Android TimePicker methods being stubs
(我不确定其他人是否遇到过这个问题,但我确实遇到过)
我正在访问 android.widget.TimePicker 的 setHour(int)
和 getHour()
(以及分钟的 getter 和 setter)——IntelliJ 不会抱怨它们不存在,但是当我 运行 来自我的 phone(或模拟器)的程序崩溃了,我看到了 java.lang.NoSuchMethodError android.widget.TimePicker.getHour
的错误日志。 (其他 minute/hour getter/setter 包括)。
我尝试访问 TimePicker class (Ctrl+B) 的定义,我意识到每个方法都包含一行:throw RuntimeException("Stub");
那这是什么;我该如何继续前进?
IntelliJ doesn't complain of their inexistence
那是因为您正在针对 API 级别 23 进行编译。
but when i run the program from my phone (or emulator) it crashes and i see an error log of java.lang.NoSuchMethodError android.widget.TimePicker.getHour
那是因为 getHour()
was added in API Level 23,而您的设备或模拟器是 运行 Android 5.2 或更低版本。
我不使用 IntelliJ,但它应该抱怨你的构建。在 Eclipse 和 Android Studio 中,您会从 Lint 收到一个错误,指示您正在调用一个方法 (getHour()
),该方法存在于您的 compileSdkVersion
(23) 但不存在于您的 minSdkVersion
(无论您将其设置为什么,作为您愿意支持的最旧 API 级别)。
I tried accessing the definition for the TimePicker class (Ctrl+B) and I realised every method contained a line: throw RuntimeException("Stub")
那是因为它正在反编译编译时类路径中的 android.jar
,它纯粹由存根实现组成以满足 javac
编译器。在运行时,您的进程的 VM 将有一个具有实际实现的 JAR 版本。
How can I move on?
可能会停止调用 getHour()
,除非你只能在 Android 6.0+ 设备上这样做。
(我不确定其他人是否遇到过这个问题,但我确实遇到过)
我正在访问 android.widget.TimePicker 的 setHour(int)
和 getHour()
(以及分钟的 getter 和 setter)——IntelliJ 不会抱怨它们不存在,但是当我 运行 来自我的 phone(或模拟器)的程序崩溃了,我看到了 java.lang.NoSuchMethodError android.widget.TimePicker.getHour
的错误日志。 (其他 minute/hour getter/setter 包括)。
我尝试访问 TimePicker class (Ctrl+B) 的定义,我意识到每个方法都包含一行:throw RuntimeException("Stub");
那这是什么;我该如何继续前进?
IntelliJ doesn't complain of their inexistence
那是因为您正在针对 API 级别 23 进行编译。
but when i run the program from my phone (or emulator) it crashes and i see an error log of java.lang.NoSuchMethodError android.widget.TimePicker.getHour
那是因为 getHour()
was added in API Level 23,而您的设备或模拟器是 运行 Android 5.2 或更低版本。
我不使用 IntelliJ,但它应该抱怨你的构建。在 Eclipse 和 Android Studio 中,您会从 Lint 收到一个错误,指示您正在调用一个方法 (getHour()
),该方法存在于您的 compileSdkVersion
(23) 但不存在于您的 minSdkVersion
(无论您将其设置为什么,作为您愿意支持的最旧 API 级别)。
I tried accessing the definition for the TimePicker class (Ctrl+B) and I realised every method contained a line: throw RuntimeException("Stub")
那是因为它正在反编译编译时类路径中的 android.jar
,它纯粹由存根实现组成以满足 javac
编译器。在运行时,您的进程的 VM 将有一个具有实际实现的 JAR 版本。
How can I move on?
可能会停止调用 getHour()
,除非你只能在 Android 6.0+ 设备上这样做。