Подтвердить что ты не робот

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? Больше информации об этом было бы полезно, поскольку я не нашел много в Интернете. Спасибо заранее.

4b9b3361

Ответ 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);