2010-11-25 7 views
0

リソースmyResources = getResources();Androidでデータ型をキャストする

CharSequence styledText = myResources.getText(R.string.stop_message); 描画可能アイコン= myResources.getDrawable(R.drawable.app_icon);

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

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

アニメーションtranout = AnimationUtils.loadAnimation(this、R.anim.spin_shrink_fade);

文字列{} stringArray = myResources.getStringArray(R.array.string_array);

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

リソースmyResources = getResources(); AnimationDrawable rocket =(AnimationDrawable)myResources.getDrawable(R.drawable.frame_by_frame);

私は、最後の2つのステートメントを先のステートメントと比較します。私の質問は、キャスティングが必要でない上記の他の例でAnimationDrawableを明示的にキャストするのはなぜですか?

答えて

1

AnimationDrawableDrawable(間接的)です。

myResources.getDrawableは、タイプAnimationDrawableに割り当てるためにキャストする必要があるタイプDrawableを返します。基本的

AnimationDrawable

Drawable変数がDrawableタイプ及び(AnimationDrawableを含む)、その子のタイプを指すことができることを意味し、indirectectly Drawableのタイプです。これは逆では機能しません。たとえば、タイプDrawableを、DrawableのタイプをLevelListDrawable(別のタイプを指す変数に割り当てることはできません)と同じ方法で、AnimationDrawableを指す変数に割り当てることはできませんDrawable)。より一般的な情報については http://developer.android.com/reference/android/graphics/drawable/DrawableContainer.html

そしてこのページ:

が、この詳細はページを参照してください http://www.javabeginner.com/learn-java/java-inheritance

+0

public class HelloAndroid extends Activity { /**アクティビティが初めて作成されたときに呼び出されます。 */ @Override パブリックボイドonCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); O setContentView(R.layout.main); – jojo10

+0

public class HelloAndroid extends Activity { /**アクティビティが初めて作成されたときに呼び出されます。 */ @Override パブリックボイドonCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout。メイン);/**私はまだ混乱している。ですから、(HelloAndroid)を使ってonCreateメソッドをキャストする必要はありません.onアクティビティを拡張する場合は作成しますか? */ – jojo10

+0

あなたがレイアウトしているようなロジックは、スーパークラスで生成されたメソッドが派生クラスで使用されるときに明示的にキャストすることです。そうであれば、superアクティビティクラスで生成されたonCreateメソッドは、public void(HelloAndroid).onCreate(Bundle savedInstanceState)などのキャストを持つべきではありません。 – jojo10

0

あなたはさまざまな種類を取得要求するものに応じてdrawblesの種類、がたくさんあるので、すべて抽象的な描画可能な祖先から継承します。ジェネリックDrawableメソッドとメンバだけを気にしない限り、あなたが求めているもののタイプを知り、ジェネリックDrawableをその特定の型にキャストする必要があります。