Android O кастинг для findViewById больше не нужен?
Недавно я обновил свой SDK Android и создал инструменты для API 26 в Android Studio, и я сразу заметил, что Android Studio выделяет мои представления как "избыточные", когда я делаю что-то вроде этого:
TextView itemName = (TextView) findViewById(R.id.menuItemName);
После некоторых исследований я обнаружил, что, поскольку SDK 26, findViewById
использует функции Java 8 для возврата одного и того же типа объекта, но то, что я хотел знать, - это полностью безопасно удалить все броски. Это приведет к возникновению каких-либо проблем на Android до 26? Больше информации об этом было бы полезно, поскольку я не нашел много в Интернете. Спасибо заранее.
Ответы
Ответ 1
Подпись метода изменилась, как вы заметили, и теперь она выглядит так:
public <T extends View> T findViewById(int id);
по сравнению со старым (pre SDK 26):
public View findViewById(int id);
пока вы используете SDK 26 (или более новый) для компилировать свой проект, вы можете безопасно удалить кастинг из своего кода, поскольку будете использовать новый findViewById()
, который больше не требует его.
поэтому с меньшим minSdk, чем 26, не вызовет проблемы?
Нет, ни minSdk
, ни targetSdk
не имеют значения. Важно то, что compileSdk
должно быть 26
или выше.
Ответ 2
Простой и элегантный
В старой версии (SDK ниже 26)
TextView name=(TextView) findViewById(R.id.TextView);
Выше SDK 26
TextView name= findViewById(R.id.TextView);