Android: BitmapFactory.decodeResource retourner null
Je n'arrive pas à comprendre cela. J'ai 2 classes java avec des caractéristiques différentes, chacune appelant BitmapFactory.decodeResource pour obtenir la même image de la ressource, on renvoie le bitmap tandis que l'autre renvoie la valeur null. Les deux classes sont dans le même package.
Ici est la classe qui travaille, il appelle BitmapFactory.decodeResource qui renvoie l'image bitmap. Je n'ai inclus le code pertinent.
package advoworks.test;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MainScreen extends SurfaceView implements SurfaceHolder.Callback {
private static final String TAG = MainScreen.class.getSimpleName();
public MainScreen(Context context) {
super(context);
Bitmap bitmap;
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.droid_1);
//adding the callback (this) to the surface holder to intercept events;
getHolder().addCallback(this);
//make the GamePanel focusable so it can handle events
setFocusable(true);
}
}
Ici est la classe qui ne fonctionne pas. BitmapFactory.decodeResource renvoie une valeur NULL dans le debug. Je n'ai inclus le code que j'ai ressenti était pertinente.
package advoworks.test;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.Log;
public class Segment {
private int x;
private int y;
private Bitmap bitmap;
public Segment(int x, int y) {
Log.d(TAG, "Creating Segment");
try {
this.bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.droid_1);
} catch (Exception e) {
Log.d(TAG,"Error is " + e);
}
this.x = x;
this.y = y;
Log.d(TAG, "Created Segment");
}
}
Aucune idée de quelqu'un?
en êtes-vous des erreurs dans le logcat?
non, je ne reçois pas toutes les erreurs dans le logcat 🙁
Pourquoi ne u besoin de charger la même ressource en deux fois dans la même application. La charge une fois et de passer sa référence à tous les endroits u besoin.
non, je ne reçois pas toutes les erreurs dans le logcat 🙁
Pourquoi ne u besoin de charger la même ressource en deux fois dans la même application. La charge une fois et de passer sa référence à tous les endroits u besoin.
OriginalL'auteur Kevin | 2011-09-21
Vous devez vous connecter pour publier un commentaire.
La
getResources()
est unContext
méthode de la classe et vous n'êtes pas à l'aide d'un cadre dans votre Segment de la classe. Comment ça fonctionne. Vous devriez appelergetApplicationContext().getResources()
Vous devez passer le contexte de la
Segment
constructeur.getResources()
est un membre de laContext
classe. Donc objet de contexte est nécessaire d'appeler cette méthode.pourquoi ne pas getResources suite à une erreur de compilation? De toute façon j'ai essayé de faire ceci:
De toute façon, j'ai essayé d'obtenir un "Contexte", comme ceci par l'extension de la classe Application:
public class Segment extends Application {
<br/>public Segment(int x, int y) {
<br/>try {
<br/>Context context;
<br/>context = getApplicationContext();
<br/>this.bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.droid_1);
<br/>} catch (Exception e) {
<br/>Log.d(TAG,"Error is " + e);
<br/>}
}
Désolé de ne pas utilisé à l'aide de la mini démarques Le code échoue au contexte = getcontexteapplication(); L'erreur renvoyée est de java.lang.NullPointerException Quelle est la meilleure façon d'obtenir le contexte?
OriginalL'auteur Ronnie
Vérifier la résolution de votre image, si c'est trop grand, le BitmapFactory.decodeResource retournera null (pas d'exception)
OriginalL'auteur Eli
assurez-vous que votre image n'est pas dans drawable-v24 dossier, déplacer vers drawable dossier.
cela a fonctionné pour moi.
OriginalL'auteur Amir De