Приведение типа данных в Android - PullRequest
0 голосов
/ 25 ноября 2010

Resources myResources = getResources ();

CharSequence styledText = myResources.getText (R.string.stop_message);Drawable icon = myResources.getDrawable (R.drawable.app_icon);

int opaqueBlue = myResources.getColor (R.color.opaque_blue);

float borderWidth = myResources.getDemension (R.dimen.standard_border);

Animation tranout = AnimationUtils.loadAnimation (this, R.anim.spin_shrink_fade);

String {} stringArray = myResources.getStringArray (R.array.string_array);

int [] intArray = myResources.getIntArray (R.array.integer_array);

Resources myResources = getResources ();AnimationDrawable rocket = (AnimationDrawable) myResources.getDrawable (R.drawable.frame_by_frame);

Я сравниваю последние два предложения с последующими.Мой вопрос заключается в том, почему AnimationDrawable явно приводится, когда в других приведенных выше примерах приведение не требуется?

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

Потому что AnimationDrawable расширяет Drawable (косвенно).

myResources.getDrawable возвращает тип Drawable, который должен быть приведен к типу AnimationDrawable.

В основном AnimationDrawable - это тип Drawable, который означает, что переменные Drawable могут указывать на типы Drawable и их дочерние типы (включая AnimationDrawable). Это не работает в обратном порядке, например, вы не можете назначить тип Drawable переменной, которая указывает на AnimationDrawable, так же, как вы не можете назначить тип Drawable переменной, указывающей на LevelListDrawable (другой тип Drawable).

Смотрите эту страницу для получения дополнительной информации: http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html

И эта страница для более общей информации: http://www.javabeginner.com/learn-java/java-inheritance

0 голосов
/ 25 ноября 2010

, потому что есть много видов рисования, в зависимости от того, что вы запрашиваете, вы получаете разные типы, все они наследуются от общего рисованного предка. Если вас не интересуют только общие методы и члены Drawable, вы должны знать тип того, о чем вы просите, и приводить общий Drawable к этому конкретному типу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...