Java Android位图变为空

Java Android位图变为空,java,android,Java,Android,在我的drawable object类中,我有一个成员变量,该变量存储一个位图,该位图被分配了构造函数,在调用render函数时,位图已变为null,我无法找出原因 类成员和构造函数: 公共类MyDrawableObject{ 私人内部文件位置; 私人决赛; 私有上下文; 私有位图bmp; 私人INTX; 私营企业; 私人int W; 私有inth; public static List ObjectList=new ArrayList(); 公共MyDrawableObject(int fil

在我的drawable object类中,我有一个成员变量,该变量存储一个位图,该位图被分配了构造函数,在调用render函数时,位图已变为
null
,我无法找出原因

类成员和构造函数:

公共类MyDrawableObject{
私人内部文件位置;
私人决赛;
私有上下文;
私有位图bmp;
私人INTX;
私营企业;
私人int W;
私有inth;
public static List ObjectList=new ArrayList();
公共MyDrawableObject(int fileloc,Context con){
mFileLocation=fileloc;
mId=ObjectList.size();
mContext=con;
ObjectList.add(这个);
位图bmp=BitmapFactory.decodeResource(mContext.getResources(),mFileLocation);
//储存宽度和高度
W=bmp.getWidth();
H=bmp.getHeight();
对数d(“可绘制对象”,“宽度:+W+”高度:+H);
Log.d(“DrawableObject”,“添加到列表的对象,ID:+mId”);
Log.d(“DrawableObject”,“ID:+mId+”文件位置:+mFileLocation”);
}
发生错误的函数

public void SetupImage(上下文mContext){
//创建我们的UV坐标。
浮动[]UV=新浮动[]{
0.0f,0.0f,
0.0f,1.0f,
1.0f,1.0f,
1.0f,0.0f
};
//纹理缓冲区
ByteBuffer bb=ByteBuffer.allocateDirect(uvs.length*4);
bb.order(ByteOrder.nativeOrder());
uvBuffer=bb.asFloatBuffer();
uvBuffer.put(uvs);
位置(0);
//生成纹理,如果需要,请更改这些数字。
int[]texturenames=新int[1];
GLES20.glGenTextures(1,TextureName,0);
//将纹理绑定到纹理名称
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,TextureName[0]);
//集过滤
GLES20.glTexParameteri(GLES20.GL_纹理_2D,GLES20.GL_纹理_最小_过滤器,GLES20.GL_线性);
GLES20.glTexParameteri(GLES20.GL_纹理_2D,GLES20.GL_纹理_MAG_过滤器,GLES20.GL_线性);
如果(bmp==null){
Log.d(“DrawableObject”、“空位图”);
}否则{
Log.d(“DrawableObject”,“非空”);
}
//将位图加载到绑定纹理中。
GLUtils.texImage2D(GLES20.GL_纹理_2D,0,bmp,0);
}
当我运行此操作时,我在日志中收到我的
“NULL BITMAP”
消息,应用程序崩溃。我不会修改或访问
bmp
,也不会在构造函数中的上述两个示例和上面的
SetupImage
函数之外的任何其他位置进行修改或访问

非常感谢您的帮助。

罪魁祸首是

        Bitmap bmp =      BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
您正在重写bmp声明,这将导致名为bmp的局部变量,并且不会分配给类变量。您应该将其更改为

        bmp = BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
希望这有帮助。

罪魁祸首是

        Bitmap bmp =      BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
您正在重写bmp声明,这将导致名为bmp的局部变量,并且不会分配给类变量。您应该将其更改为

        bmp = BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
希望这有帮助。

罪魁祸首是

        Bitmap bmp =      BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
您正在重写bmp声明,这将导致名为bmp的局部变量,并且不会分配给类变量。您应该将其更改为

        bmp = BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
希望这有帮助。

罪魁祸首是

        Bitmap bmp =      BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);
您正在重写bmp声明,这将导致名为bmp的局部变量,并且不会分配给类变量。您应该将其更改为

        bmp = BitmapFactory.decodeResource(mContext.getResources(), mFileLocation);

希望这能有所帮助。

非常感谢,我有一种感觉,就像我以前让它工作时那样简单。我也看到了。这应该是ide中的一个警告。非常感谢,我有一种感觉,就像我以前让它工作时一样简单。我也看到了。应该是ide中的一个警告。非常感谢,我看到了一种感觉,就像我以前让它工作一样简单。我也看到了。应该是ide中的一个警告。非常感谢,我有一种感觉,就像我以前让它工作一样简单。我也看到了。应该是ide中的一个警告。