Android TimePicker方法是存根

时间:2015-08-30 14:46:16

标签: android android-timepicker

(我不确定其他人是否都面临这个问题,但我确实如此) 我正在访问android.widget.TimePicker的setHour(int)getHour()(以及分钟的getter和setter) - IntelliJ并没有抱怨他们的不存在,但是当我运行程序时它从我的手机(或模拟器)崩溃,我看到java.lang.NoSuchMethodError android.widget.TimePicker.getHour的错误日志。 (其他分钟/小时的吸气/安装者包括在内)。 我尝试访问TimePicker类的定义(Ctrl + B),我意识到每个方法都包含一行:throw RuntimeException(" Stub"); 那么这是什么呢?我该如何继续前进?

1 个答案:

答案 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及更高版本的设备上使用此功能。