ボタンをクリックして背景色を取得したい場合。"blue_color"という名前のリソースで背景色が同じ場合、make background transparent.Elseにすると"blue_color"になります。私はhereの方法を試したが、それは私にエラーを与える。ボタンの背景色を取得しようとしているときにjava.lang.ClassCastExceptionが発生しました
コード:logcatから
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ColorDrawable btc = (ColorDrawable) btn.getBackground();
int colorId = btc.getColor();
if(colorId == R.color.blue_color){
btn.setBackgroundColor(Color.TRANSPARENT);
}else{
btn.setBackgroundColor(getResources().getColor(R.color.blue_color));
}
}
});
エラー:
致命的な例外:メイン とjava.lang.ClassCastException:android.graphics.drawable.InsetDrawableはandroid.graphics.drawableにキャストすることはできません.ColorDrawable
行は、
ColorDrawable btc =(ColorDrawable)btn.getBackground();
'R.color.blue_color'は色ではないので、色は' R.color.blue_color'になりません。カラーリソースの識別子です。私はあなたのボタンの状態を追跡するために、別の 'boolean'や他のフィールドを使うことをお勧めします。 – CommonsWare