0

私はAndroid開発で絶対に新しく、ユーティリティクラス(アクティビティクラスではないクラス)へのBitmapFactory.decodeResource()メソッドBitmapFactory.decodeResource()メトリックをユーティリティクラス(アクティビティではないクラス)に使用できないのはなぜですか?getResources()メソッドを解決できません

だから私は私のコードにいくつかのリファクタリングをやっていると私は、このコードの行に移動する必要があります。私は、ユーティリティクラス内で宣言されたメソッドにActivityクラスメソッドから

Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.chef_hat_ok); 

を。

それは、このような何かアクティビティクラスにうまく働いたが、ユーティリティクラスのメソッドにint型移動:方法、IDEがに言う)私がgetResources(上のIDEのエラーメッセージを取得

public class ImgUtility { 

    public Bitmap createRankingImg(int difficulty) { 

     // Create a Bitmap image starting from the star.png into the "/res/drawable/" directory: 
     Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.chef_hat_ok); 

     return myBitmap; 

    } 

} 

を私は:

はヘクタール、私はそれだと思う ')(getResources'

の方法を解決することはできませんgetResources()メソッドは、アクティビティー・クラスに関連するものを検索しているためです。私はgetResources(ことを確認することができ、古いコードを見ると

方法はContextThemeWrapperオブジェクトを返します。 AppCompatActivityクラス内で検索するようにしましたが(元のアクティビティで拡張されています)、見つけられません。

だから私の疑問は、次のとおりです。

1)主な問題がある:どのように私は正しく私のprevius ImgUtility CLAS内BitmapFactory.decodeResource()メソッドを使用できますか?

2)私はBitmapFactory.decodeResource使用する際のパラメータとして方法)()メソッドを、それがgetResources(によって返さContextThemeWrapperオブジェクトを(取る)なぜ?このオブジェクトを正確に表すものは何ですか?アクティビティクラスやそれに関係していますか?どこが宣言されていますか?

TNX

答えて

5

getResources()方法はContextで利用可能です。あなたは、単にあなたのユーティリティクラスでこれを行うことができます:

public class ImgUtility { 

    public Bitmap createRankingImg(Context context, int difficulty) { 

     // Create a Bitmap image starting from the star.png into the "/res/drawable/" directory: 
     Bitmap myBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.chef_hat_ok); 
     return myBitmap; 

    } 

} 

はあなたの2番目の質問に答えるために、これを参照してください。

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

getResources()方法はContextクラスで実際に存在しています。すべてのクラスには、getResources()メソッドもあります。したがって、アクティビティ(Contextのサブクラス)からgetResources()を呼び出すと、簡単に呼び出されます。

+0

しかし、このコンテキストが正確に何を表していますか?もう一つの質問はどうですか? – AndreaNobili

+0

私の編集をご覧ください。 –

1

getResources()は、実際にはContextクラス内のメソッドです。 コンテキストオブジェクトをUtilsクラスに渡すことによって、Utilsクラスを使用してそれを行うことはできます。

これは、UtilsクラスとAndroid Contextクラスの間の結合を作成するため、コードを直接どこか別の場所に再利用できなくなることに注意してください。

2番目の質問については、私はそれに答えることができず、他の質問に残しています。 :)

関連する問題