Интерфейс, диалоги, темы, стили, меню
-
Miroslav
- Сообщения: 9
- Зарегистрирован: 10 мар 2013, 17:40
Сообщение
Miroslav » 05 апр 2013, 09:09
Здравствуйте!
В ряде случаев удобно "обернуть" стандартный класс, добавив к нему несколько полезных методов. Пишу, например:
Код: Выделить всё
package com.example;
import android.content.Context;
import android.widget.ToggleButton;
public class A extends ToggleButton {
public A(Context context) { //конструктор суперкласса
super(context);
}
private void addedMethod() {
//...
}
}
И в onCreate() Activity:
Код: Выделить всё
A a = (A) findViewById(R.id.toggleButton1);
или так:
Код: Выделить всё
A a = new A(this);
a = (A) findViewById(R.id.toggleButton1);
В любом случае вылезает ошибка преобразования типа:
E/AndroidRuntime(2472): Caused by: java.lang.ClassCastException: android.widget.ToggleButton
Почему-то наследник не приводится к типу родителя. Может, кто знает, в чем здесь дело...?
Спасибо за внимание. =)
-
KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Сообщение
KamiSempai » 05 апр 2013, 11:33
Если у Вас в xml разметке указан ToggleButton, то Вы пытаетесь привести родителя к наследнику. А этого делать нельзя.
Решение: Указать в разметке вместо "ToggleButton" что-то вроде "com.example.A".
PS: Во втором примере "A a = new A(this);" совершенно лишне. Объект создается, а потом перетирается ссылкой на другой объект.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
-
Miroslav
- Сообщения: 9
- Зарегистрирован: 10 мар 2013, 17:40
Сообщение
Miroslav » 05 апр 2013, 13:14
Спасибо Вам большое!
Совсем забыл про xml-разметку.
Плюс, может кому пригодится, необходимо включить в класс-наследник используемый вариант конструктора суперкласса, у меня это был
Код: Выделить всё
public A(Context context, AttributeSet attrs) {
super(context, attrs);
}
-
behzodbek
- Сообщения: 58
- Зарегистрирован: 23 дек 2012, 22:58
- Откуда: UZB Namangan
Сообщение
behzodbek » 06 май 2013, 20:44
Miroslav писал(а):Спасибо Вам большое!
Совсем забыл про xml-разметку.
Плюс, может кому пригодится, необходимо включить в класс-наследник используемый вариант конструктора суперкласса, у меня это был
Код: Выделить всё
public A(Context context, AttributeSet attrs) {
super(context, attrs);
}
Я из за этого конструктора почти 3 дня мучился. Как всегда РЕСПЕКТ Славику(rezak90). Он помоог найти