Как я могу сказать, в onDraw, я в Android Studio или нет? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть пользовательское представление, которое отображает часть себя ( розовая область ) в onDraw. Это делается через экземпляр класса, установленный через адаптер / привязку. У меня нет проблем с элементами 117 и details во время разработки. Однако эта розовая область равна , что приводит к вызову onDraw в Android Studio.

enter image description here

Все хорошо во время выполнения. Тем не менее, я получаю (и по праву так) сообщение об ошибке Android Studio - потому что класс, который я использую для рисования, не был создан.

enter image description here

Итак, мой вопрос :

Могу ли я определить, в коде , запущено ли приложение (действительно ли оно отображается) внутри AS (в отличие от того, развернуто ли оно на эмуляторе или устройстве)? **

Это может быть что-то вроде if (BuildConfig.DEBUG) или, может быть, [совсем] другое. (В экземпляре BuildDebug нет ничего, что могло бы помочь.)

В конце концов, я вижу свой текущий

    override fun onDraw(canvas: Canvas) {
        :
        :
        puzzle.doSomething

заменено чем-то вроде:

        if (!INSIDE_ANDROID_STUDIO)
            puzzle.doSomething

Я потратил более часа на поиск в Интернете. Без удачи. Трудно спросить: «Как я узнаю, что я работаю в IDE Android Studio?» и не получить базилион ссылок, касающихся:

  • Почему Android Studio не работает [правильно]
  • Как узнать, запущено ли другое приложение
  • Как определить, находится ли ваше приложение на переднем или заднем плане
  • Почему тот или другой не рендерится правильно

Но ничего на месте. Я также провел многочисленные поиски «UninitializedPropertyAccessException» и «Проблема рендеринга».

1 Ответ

2 голосов
/ 15 мая 2019

Вы можете сделать это, проверив, что возвращает метод isInEditMode(). Если true, ваше представление отображается в AS или другом инструменте, в противном случае - на устройстве.

Указывает, находится ли данный вид в данный момент в режиме редактирования. Представление обычно находится в режиме редактирования при отображении в инструменте разработчика. Например, если это представление рисуется визуальным конструктором пользовательского интерфейса, этот метод должен возвращать true.

https://developer.android.com/reference/android/view/View#isInEditMode()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...