Java 将上下文传递给非活动类以使用AssetManager.getAssets()
我正在开发一个android应用程序,我试图在assets文件夹中打开一个xml文件,其中包含对位于assets文件夹中的图像的引用。我在非活动类中使用AssetManager,并尝试将上下文传递给其构造函数,但没有成功。Eclipse中没有错误,但当我运行应用程序时,它会崩溃。下面是我用于这两个类和XML的代码 XML文件:Java 将上下文传递给非活动类以使用AssetManager.getAssets(),java,android,xml,dom,Java,Android,Xml,Dom,我正在开发一个android应用程序,我试图在assets文件夹中打开一个xml文件,其中包含对位于assets文件夹中的图像的引用。我在非活动类中使用AssetManager,并尝试将上下文传递给其构造函数,但没有成功。Eclipse中没有错误,但当我运行应用程序时,它会崩溃。下面是我用于这两个类和XML的代码 XML文件: <scene> <sprite> <img src="100789.jpg" positionx="100" positi
<scene>
<sprite>
<img src="100789.jpg" positionx="100" positiony="200" name="100789.jpg"/>
</sprite>
<sprite>
<img src="100788.jpg" positionx="2" positiony="20" name="100788" />
</sprite>
</scene>
负载等级(屏幕)
我做错什么了吗
我还尝试将以下代码放入构造函数中,但没有成功:
public LoadingScreen(Game game, Context context) {
super(game);
this.context=context;
AssetManager gi = con.getAssets();
try {
InputStream inStream = gi.open("assets.xml");
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(inStream);
doc.getDocumentElement().normalize();
}catch (Exception e) {
e.printStackTrace();
}
}
您试图在初始化
上下文
(上下文
成员)之前访问它,导致空点异常
。
moveAssetManager gi=con.getAssets()代码>在方法内部
@Override
public void update(float deltaTime) {
AssetManager gi = context.getAssets();
...
}
由于AndroidGame
类继承自活动
,因此必须记住活动生命周期。在调用onCreate()
之前,活动没有上下文
,在此之前调用getApplicationContext()
将返回null。因此,需要在onCreate中设置上下文字段
基本上
public class Test extends AndroidGame {
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
this.context = getApplicationContext();
}
...
}
请发布堆栈跟踪他有这个。上下文con不受关注。我想这是一个打字错误。谢谢你指出这一点。不过,他说应用程序崩溃了:Eclipse中没有错误,但当我运行应用程序时,它会崩溃@拉古南丹
@Override
public void update(float deltaTime) {
AssetManager gi = context.getAssets();
...
}
public class Test extends AndroidGame {
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
this.context = getApplicationContext();
}
...
}