(я не уверен, если все остальные сталкиваются с этой проблемой, но я делаю) я доступ к setHour(int)
и getHour()
(и геттеру в минуте и сеттер) из android.widget.TimePicker - IntelliJ не жалуется из-за их отсутствия, но когда я запускаю программу с моего телефона (или эмулятора), он падает, и я вижу журнал ошибок java.lang.NoSuchMethodError android.widget.TimePicker.getHour
. (Другие минуты/час геттер/сеттер включают). Я попытался получить доступ к определению для класса TimePicker (Ctrl + B), и я понял, что каждый метод содержит строку: throw RuntimeException («Stub»); Итак, что это? Как я могу двигаться дальше?методов Android TimePicker быть окурки
ответ
IntelliJ не жалуется на их неотъемлемость
Это потому, что вы компилируете против уровня API 23.
но когда я запустить программу с моего телефона (или эмулятор) он выходит из строя, и я вижу журнал ошибок java.lang.NoSuchMethodError android.widget.TimePicker.getHour
это происходит потому, getHour()
was added in API Level 23, а ваше устройство или эмулятор работает под управлением Android 5.2 или ниже.
Я не использую IntelliJ, но он должен жаловаться на вашу сборку. В Eclipse и Android Studio вы получите сообщение об ошибке, указывающее, что вы вызываете метод (getHour()
), который существует в вашем compileSdkVersion
(23), но не существует в вашем minSdkVersion
(независимо от того, что у вас установлено, как самого старого API уровень, который вы готовы поддержать).
Я пытался получить доступ к определению для класса TimePicker (Ctrl + B), и я понял, каждый метод содержит строку: бросить RuntimeException («Сто»)
Это потому, что это декомпиляции android.jar
то есть в вашем пути класса компиляции, который состоит исключительно из реализаций заглушки, чтобы удовлетворить компилятор javac
. Во время выполнения ваш процесс «VM» будет иметь версию этого JAR, которая имеет фактические реализации.
Как я могу двигаться дальше?
Возможно, не позвоните по телефону getHour()
, если только вы не можете уйти с этим только на устройствах Android 6.0+.
Кажется, я понимаю. Как иначе я должен 'setHour()', потому что в документах API в Интернете я не получаю никакой помощи –
@DegreatYartey: [Использовать 'setCurrentHour()'] (http://developer.android.com/reference/android/widget/TimePicker .html # setCurrentHour% 28java.lang.Integer% 29). – CommonsWare
Большое вам спасибо за помощь –