monaka android memo

Androidの勉強中!調べたことを忘れないためのブログです!

setBackground でエラー発生。

Android4.2.2でアプリ開発していて、そのアプリをAndroid2.3.6?で動かした時に発生しました。

若干落ち込みながら、落ちたところを探すと、Viewに対して「setBackground()」で、背景画像を差し替えている所で落ちていました。

「setBackground()」について調べると、API LEVEL 16から導入されたよーということでした。
View | Android Developers


API LEVEL 16で導入されたものを、Android2.3(API LEVEL 10)で実行したので、落ちるのも当然ですね(´・ω・`)

API LEVEL 16以上でなければ、「setBackgroundDrawable()」を使用するように修正すると下記のような感じになりました。

/**
 * バックグラウンドの画像を差し替える。
 * AndroidOSのVerによって使用できるAPIが変わるため専用の関数を作成する。
 * @param v View
 * @param d 画像
 */
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
public void setBackground(View v, Drawable d)
{
	int sdk = android.os.Build.VERSION.SDK_INT;

	if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN)
	{
		//API LEVEL 16以下の時。
		v.setBackgroundDrawable(d);
	}
	else
	{
		//API LEVEL 16以上の時。
		v.setBackground(d);
	}
}


Viewの背景を差し替える方法は他にもあるので、ベストな修正とは思いませんが、
AndroidのVerによって処理を変えるということを、あまりやったことがなかったのでメモします( ・`ω・´)