Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Handler handler = new Handler() Ошибка: Handler is abstract; cannot be instantiated. Почему Android Studio импортирует не тот класс при автоимпорте?

#android #android_studio


Воздействуя Alt+Enter на слово Handler Андроид-Студио вставило автоматом строку: 

import java.util.logging.Handler;

    


Ответы

Ответ 1



Поскольку вопрос касается больше проблем с автоимпортом, попробую прояснить ситуацию. При следующих настройках автоимпорта (Editor-> General -> Auto Import): Все галочки в секциях XML и Java установлены Insert imports on paste -> All (влияет на импорт при копипасте кода) Мы получим следующие настройки автоимпорта: Если импортируемый класс один (как, например, Button) во всех доступных для импорта API, то он будет автоматически импортирован без лишних вопросов. Если классов для импорта более одного (как класс Handler), то требуется нажать Alt + Enter на таком классе и будет предложен выбор в выпадающем меню, какой именно класс импортировать Если ни одного класса в коде не останется (будут удалены при редактировании кода), то и импорт этого класса будет удален автоматически На мой взгляд это самая оптимальная настройка автоимпорта, которая не беспокоит в очевидных случаях и не своевольничает, если есть варианты выбора Официальная документация по настройке автоимпорта

Ответ 2



Оказывается вместо строки: import java.util.logging.Handler; нужно вставлять: import android.os.Handler; Т.е. среда разработки импортирует не тот Handler. ) Поэтому и не работает, например: handler.postDelayed( ... ) и т.д. По Alt+Enter вставился импорт: import java.util.logging.Handler автоматом, без предоставления выбора!

Комментариев нет:

Отправить комментарий