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によって処理を変えるということを、あまりやったことがなかったのでメモします( ・`ω・´)