2015-08-30 3 views
0

(я не уверен, если все остальные сталкиваются с этой проблемой, но я делаю) я доступ к setHour(int) и getHour() (и геттеру в минуте и сеттер) из android.widget.TimePicker - IntelliJ не жалуется из-за их отсутствия, но когда я запускаю программу с моего телефона (или эмулятора), он падает, и я вижу журнал ошибок java.lang.NoSuchMethodError android.widget.TimePicker.getHour. (Другие минуты/час геттер/сеттер включают). Я попытался получить доступ к определению для класса TimePicker (Ctrl + B), и я понял, что каждый метод содержит строку: throw RuntimeException («Stub»); Итак, что это? Как я могу двигаться дальше?методов Android TimePicker быть окурки

ответ

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 вы получите сообщение об ошибке, указывающее, что вы вызываете метод (getHour()), который существует в вашем compileSdkVersion (23), но не существует в вашем minSdkVersion (независимо от того, что у вас установлено, как самого старого API уровень, который вы готовы поддержать).

Я пытался получить доступ к определению для класса TimePicker (Ctrl + B), и я понял, каждый метод содержит строку: бросить RuntimeException («Сто»)

Это потому, что это декомпиляции android.jar то есть в вашем пути класса компиляции, который состоит исключительно из реализаций заглушки, чтобы удовлетворить компилятор javac. Во время выполнения ваш процесс «VM» будет иметь версию этого JAR, которая имеет фактические реализации.

Как я могу двигаться дальше?

Возможно, не позвоните по телефону getHour(), если только вы не можете уйти с этим только на устройствах Android 6.0+.

+0

Кажется, я понимаю. Как иначе я должен 'setHour()', потому что в документах API в Интернете я не получаю никакой помощи –

+1

@DegreatYartey: [Использовать 'setCurrentHour()'] (http://developer.android.com/reference/android/widget/TimePicker .html # setCurrentHour% 28java.lang.Integer% 29). – CommonsWare

+0

Большое вам спасибо за помощь –

 Смежные вопросы

  • Нет связанных вопросов^_^