在我的应用程序中,我有很多类(class)和 Activity 。 Droid是没有上下文的类。 Mygame是扩展SurfaceView并实现SurfaceHolder.Callback的类。
我在mygame类中创建Droid的对象,并为其设置背景图像和位置。下面给出了我为此编写的代码。
block1 = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.birdpic), 100, 10);
Droid类的构造函数如下所示。
public Droid(Bitmap bitmap, int x, int y) {
this.bitmap = bitmap;
this.x = x;
this.y = y;
}
在特定情况下,我必须从Droid类本身设置Droid对象的背景图像和位置。这里我正面临这个问题。下面是执行此操作的代码段。
if(checkflag)
{
myObj.centerblock=new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}
问题在于Droid类没有上下文。所以我不能在这里使用getResources()。我已经尝试了下面的代码,但是它崩溃了。
if(checkflag)
{
myObj.centerblock=new Droid(BitmapFactory.decodeResource(myObj.getResources(), R.drawable.blast), myObj.xpos, myObj.ypos);
}
有谁能够帮助我。我只想设置背景图像并将其放置在Droid类本身中的Droid对象中。
最佳答案
上下文是系统的句柄;它提供诸如解析资源,获得对数据库和首选项的访问等服务。它是一个“接口(interface)”,允许访问特定于应用程序的资源以及有关应用程序环境的类和信息。您的 Activity 和服务还将Context扩展为它们继承了所有这些方法来访问应用程序在其中运行的环境信息。
这意味着如果要获取/修改有关资源的某些特定信息,则必须将上下文传递给特定的类。
您可以在构造函数中传递上下文,例如
public classname(Context context, String s1)
{
...
}
关于android - 如何从没有上下文的类中调用getResources()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8238588/