Android 安卓:我可以访问自己班级的资源吗?

Android 安卓:我可以访问自己班级的资源吗?,android,resources,bitmap,Android,Resources,Bitmap,在我的项目中,我有一个类,在这个类中,我希望能够访问图片的属性。但我不想在这节课上表现出来。在这门课上,我只想知道图像的宽度和高度,并做一些数学函数来返回一些东西 我的问题是我无法获得资源。例如,当我写作的时候 image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim); 它表示类型Stego的未定义的getResources()方法(Stego是我的类名) 请告诉我该怎么办 public class

在我的项目中,我有一个类,在这个类中,我希望能够访问图片的属性。但我不想在这节课上表现出来。在这门课上,我只想知道图像的宽度和高度,并做一些数学函数来返回一些东西

我的问题是我无法获得资源。例如,当我写作的时候

image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim);
它表示类型Stego的未定义的getResources()方法(Stego是我的类名)

请告诉我该怎么办

public class Stego()
{
    Public Stego(){
        image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim);
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    }
}
该函数属于该类。因此,除非您的
Stego
类直接(或间接)扩展
Context
,否则没有可用的
getResources()
函数

因此,您需要做的是传递对应用程序上下文的引用(例如,在
Stego
类或类似类的构造函数中)。或者,如果您只需要一个资源ID,那么传递该ID可能更容易

例如,这可能如下所示:

public class Stego()
{
    Public Stego(Context myAppContext){
        image = BitmapFactory.decodeResource(myAppContext.getResources(), R.drawable.tasnim);
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    }
}
Stego stego = new Stego(this);
然后,您可以从活动中初始化
Stego
类的一个实例,如下所示:

public class Stego()
{
    Public Stego(Context myAppContext){
        image = BitmapFactory.decodeResource(myAppContext.getResources(), R.drawable.tasnim);
        imWidth  = image.getWidth();
        imHeight = image.getHeight();
    }
}
Stego stego = new Stego(this);

@Hesam:正如我在回答中所说的,您需要传递对应用程序上下文的引用。我添加了一个小代码示例。