2015-08-10 1 views
0

Я преобразование проекта Eclipse, чтобы работать в Android Studio и получил все вопросы, закрепленные за исключением некоторых XMLs макета показывает следующий вопрос в перетаскивании ПосмотретьRendering вопросы: Следующие классы не могут быть воплощенными

Проблемы с рендерингом: Следующие классы не могут быть созданы XXXmyclass.

Я проверил свой класс и, похоже, хорошо, я изменил последний API, который у меня есть из небольшого выпадающего списка; 22 (думаю, это API компиляции). Я не изменил настройку Gradle, может ли это быть там?

Я havnt отправил любой код, поскольку я не уверен, что было бы полезно - любые идеи?

ответ

0

Прежде всего: это только предварительный просмотр макета. Вы можете редактировать XML и продолжать свой проект, и он ничего не повлияет на него.

Макет рендеринга буквально запускает ваши классы Java для создания предварительного просмотра с помощью некоторой издевавшейся реализации или реального устройства Android, похожего на тестирование смешных реализаций.

Так что это сообщение просто сообщает вам, что эта издевающаяся система не смогла выполнить предварительный просмотр.

Но если вы действительно хотите просмотреть предварительный просмотр, вы должны проверить, где в вашем классе вы полагаетесь на переменные или объекты, которые присущи вашему приложению, к которым у макетной системы не будет доступа.

Пример, если ваш пользовательский вид делает некоторые специальные вещи во OnLayout:

@Override onLayout(...){ 
    int value = MyLayoutDetailsCalculation.getExtraPadding(getContext()); 
} 

, что это код, который звонит на статический метод на отдельный класс, который использует контекст (возможно получение значения из системных ресурсов или диспетчера дисплеев), и это не будет хорошо работать в среде с наддувом, и предварительный просмотр не сможет его отобразить.

воистину счастлив, это легко исправить:

@Override onLayout(...){ 
    int value; 
    if(isInEditMode()){ // that returns true if this code is being executed by AndroidStudio mocked system. 
     value = 0; // any value that makes OK for your custom class to properly show a preview 
    } else { 
     value = MyLayoutDetailsCalculation.getExtraPadding(getContext()); 
    } 
}