2017-03-29 11 views
2

ContextCompactクラスをいつアプリケーションで使用するかを知りたい。基本的にその使用法は何ですか?またいつ使用するのですか?私は開発者のサイトを読んでいる、それはContextCompactは "コンテキストの機能にアクセスするためのヘルパー"と言います。しかし、この行は何を意味していますか?ContextCompactクラスを使用する場合

+1

http://stackoverflow.com/questions/38229842/whats-the-difference-between-activitycompat-and-contextcompat –

答えて

1

ContextCompatクラスは、テーマを気にすることなくdrawableやcolorなどのリソースを取得する場合に使用します。リソースにアクセスするための統一されたインターフェイスを提供し、下位互換性を提供します。

一般的なユースケースは...など例えば

を色や描画可能な取得することができContextCompat.getDrawable(文脈、R.drawable.someimage)); ContextCompat.getDrawable(context、R.color.blue));

GETCOLOR

のソースコード

/** * Returns a color associated with a particular resource ID * <p> * Starting in {@link android.os.Build.VERSION_CODES#M}, the returned * color will be styled for the specified Context's theme. * * @param id The desired resource identifier, as generated by the aapt * tool. This integer encodes the package, type, and resource * entry. The value 0 is an invalid identifier. * @return A single color value in the form 0xAARRGGBB. * @throws android.content.res.Resources.NotFoundException if the given ID * does not exist. */ @ColorInt public static final int getColor(Context context, @ColorRes int id) { final int version = Build.VERSION.SDK_INT; if (version >= 23) { return ContextCompatApi23.getColor(context, id); } else { return context.getResources().getColor(id); } }

この方法を見てみましょうAPIレベルの解像度を気にして、自動的に状態やテーマを解決かかります。 23より上では、色の状態にアクセスすることができますが、これは内部的に解決されています。代わりに、各リソースについて確認する必要があります。

2

ContextCompatは、いくつかの作業を基本コンテキストに置き換えるためのクラスです。あなたは

getContext().getColor(R.color.black); 

のようなものの前に使用している場合

は、例えば、今、そのは、Android 6.0(API 22+)以来を非推奨ますので、使用する必要があります。

getContext().getColor(R.color.black,theme); 

やテーマを埋めるContextCompatを使用します自動的にあなたのContextのテーマに依存します:

ContextCompat.getColor(getContext(),R.color.black) 
getDrawable

同じこともContextCompatは、そのような権限を確認するか、

0

を積層する複数のアクティビティを追加するなどのAPIの機能のための他の方法を22+含まれている基本的に公式開発者のサイトによると、それは中の機能にアクセスするためのヘルパーです後方互換性のあるAPIレベル4の後にコンテキストが導入されました。

詳細については、このリンクを参照してください。 https://developer.android.com/reference/android/support/v4/content/ContextCompat.html

基本的にgetBackgroundResourceまたはgetColorメソッドは廃止されており、ContextCompactを使用することはその代替方法です。私はこれが役立つことを願っています

関連する問題