Хочу унаследоваться от Floating Action Button в отдельный класс, чтобы определить в этом классе всё, что связано в этой кнопкой.
public class MainViewFAB extends FloatingActionButton {
public MainViewFAB(Context context) {
super(context);
}
}
Но как правильно привести тип при создании экземпляра объекта?
При таком приведении:
fab = (MainViewFAB) findViewById(R.id.mainViewTab);
среда разработки ошибок не выдаёт, но при запуске возникает исключение
java.lang.ClassCastException: android.support.design.widget.FloatingActionButton cannot be cast to com.example.MainViewFAB
Если привести
fab = (FloatingActionButton) findViewById(R.id.mainViewTab);
то среда выдаст
Incompatible Types; Requierd: MainViewFAB, Found: FloatingActionButton
Если же ничего не приводить, то среда выдаст
Incompatible Types; Requierd: MainViewFAB, Found: View
При создании кастомного view в layout необходимо указать класс вместе с пакетом. В Вашем случае будет примерно так:
<com.example.MainViewFAB
... />
И далее:
MainViewFAB fab = (MainViewFAB) findViewById(R.id.mainViewTab);
Нашел причину. В конструкторе есть только контекст, а надо ещё AttributeSet.
public MainViewFAB(Context context, AttributeSet attrs) {
super(context, attrs);
}
Разметка и приведение типов - как указал @post_zeew в другом ответе.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости