9

RelativeLayoutオブジェクトのsetBackgroundメソッドがAPI16(Android 4.1)以降を対象としていることに気付きましたが、私のアプリケーションにはターゲットAPI 8があり、使用できません。

この問題の代替ソリューションはありますか( TargetApi(16)でクラス/メソッドをマークするか、マニフェストでターゲットAPIを変更する以外に)?
ありがとうございました!

編集:Eclipseにはバグがあり、setBackgroundDrawableでも同じエラーが表示されましたが、現在は機能しているようです。ご協力ありがとうございました。

4

3 に答える 3

30

次のいずれかを使用します。

2番目のものを使用する場合は、APIバージョンで条件付きチェックを必ず実行してください。

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

...そしてそれをとでマークし@TargetApi(16)ます@SuppressWarnings("deprecation")

于 2012-10-01T18:37:54.830 に答える
1

場合によります。背景に色を設定する場合は、を使用しますsetBackgroundColor()setBackgroundDrawable()Drawableの場合、 16未満のAPIおよびAPI16デバイスで非推奨のメソッドを使用できsetBackground()ます。setBackgroundResource()リソースを背景として設定するためにも使用できます。

多くのメソッドは非推奨としてマークされていますが、実際に削除されたメソッドはまだ見つかっていないことに注意してください。したがって、API 16でも非推奨のメソッドを使用できますが、デバイスが実行しているAPIバージョンに応じて、ターゲットAPIを16に設定し、ifelseを使用してメソッドを切り替えることをお勧めします。

于 2012-10-01T18:38:02.430 に答える
0

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

于 2012-10-01T18:37:37.330 に答える