2012-10-01 21 views
9

私はは、API 16(アンドロイド4.1)以上を対象としているRelativeLayoutオブジェクトの方法をsetBackgroundことに気づいたが、私のアプリケーションは、ターゲットAPI 8を持っており、私はそれを使用することはできません。アンドロイド - 設定レイアウトの背景には、プログラム

この問題の解決方法はありますか(クラス/メソッドにTargetApi(16)をマークするか、マニフェストのターゲットAPIを変更する以外に)?
ありがとうございます!

編集:Eclipseはバギーであり、それはsetBackgroundDrawableのために私に同じエラーを示したが、今では動作するようです。ご協力ありがとうございました。

答えて

31

使用1:

お問い合わせの場合

if (Build.VERSION.SDK_INT >= 16) 
    view.setBackground(...); 
else 
    view.setBackgroundDrawable(...); 

を...と@TargetApi(16)@SuppressWarnings("deprecation")でマーク:E秒1、あなたのAPIのバージョンで条件付きのチェックを行うようにしてください。

+1

ああ私は.setBackgroundDrawable(Drawable)メソッドを知っていますが、私にはIDEにはapi 16の要件と同じエラーがありました。私はEclipseを使用していますが、IDEを再オープンしてコードを掃除した後にバグと思われました。あなたよりもずっとずいぶんお手数です。 – sethengine

+1

@sethengineトラブルを心配する必要はありません。私たちは助けに来ました!あなたが問題を解決してうれしいです。 – Eric

0

代わりにsetBackgroundDrawable()を使用してください。同じことをしますが、新しいsetBackground()メソッド以降では非推奨になりました。

1

です。バックグラウンドとして色を設定する場合は、setBackgroundColor()を使用します。 Drawableの場合は、API 16デバイスの場合は、現在非推奨のメソッドsetBackgroundDrawable()を使用し、16未満のAPIの場合はsetBackground()を使用できます。リソースをバックグラウンドとして設定する場合は、setBackgroundResource()を使用することもできます。

多くのメソッドは廃止予定とマークされていますが、実際に削除されたメソッドはまだありません。 API 16でも廃止予定のメソッドを使用できますが、ターゲットAPIを16に設定し、デバイスが実行しているAPIのバージョンに応じてメソッド間を切り替えるif elseを使用することをおすすめします。

関連する問題