У меня есть приложение, которое использует overridePendingTransition для создания некоторых пользовательских анимаций при переходе от одного действия к другому. Это стало доступно в Android 2.0, но я хочу, чтобы приложение работало на Android 1.6. Я понял, если я только что проверил, что android.os.Build.VERSION. VFY: невозможно разрешить виртуальный метод 346: ../../Login: overridePendingTransition (II) V
Разве невозможно использовать новые функции, условно основанные на версии SDK?
Возможно ли использовать новые функции на основе версии SDK?
Да, возможно.
Я предполагаю, что ваш код выглядит так:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
overridePendingTransition(...);
}
Если я прав, то это не сработает. Виртуальная машина попытается найти overridePendingTransition()
при загрузке класса, а не при выполнении оператора if()
.
Вместо этого вы должны иметь возможность сделать следующее:
if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) {
SomeClassDedicatedToThisOperation.overridePendingTransition(this, ...);
}
где реализация overridePendingTransition()
в SomeClassDedicatedToThisOperation
просто вызывает overridePendingTransition()
на поставляется Активность
.
Пока SomeClassDedicatedToThisOperation
больше нигде не используется, его класс не будет загружен, пока вы не окажетесь внутри теста if()
, и вы не получите Верифиеррор
.