2017-01-08 19 views
0

私は勉強中でアンドロイドスタジオでアンドロイドアプリケーションを作ろうとしています。しかし私は理解できない何かを見つけました。残念なことに、DrawbleにPaintDrawableをキャストするとデバッグ中にアプリが停止しました

私は以下の文を記述する場合、問題はありません。

のTextViewのVM =新しいのTextView(これは)。

Drawable pnt = vm.getBackground();

しかし、私は右手にPaintDrawableをキャストし、以下のような文を、書き、そしてこのアプリを構築し、自分のデバイスにAPKをインストールする場合、アプリケーションは、メッセージが、「残念ながら、アプリは停止しました」表示は機能しません。 。

TextView vm = new TextView(this);

PaintDrawable pnt =(PaintDrawable)vm.getBackground();

誰かが私にこれを手伝うことができました...事前にありがとうございます。

答えて

0

TextView :: getBackground returns a Drawable、必ずしもPaintDrawableである必要はありません。

あなたがそうすることができるかどうかをチェックせずに、PaintDrawableにダウンキャストしようとしています。試してみてください:

TextView vm = new TextView(this); 

if (vm.getBackground() instanceof PainDrawable) { 
    PaintDrawable pnt = (PaintDrawable) vm.getBackground(); 
    // ... 
} 
else { 
    Log.d("SomeTag", vm.getBackground().getClass()); 
} 
関連する問題