Libgdx资产管理器完成加载方法不起作用,抛出空指针异常

问题描述 投票:0回答:1

我创建了一个新的libgdx android项目,正如标题所示,在使用资产管理器时,似乎出现了空指针异常。在较早的项目中我从未遇到过这个问题,所以我发现它很奇怪,并且在互联网上没有找到其他关于此问题的参考。这些文件位于android资产文件夹中,所以这不是问题。

堆栈跟踪如下:

java.lang.NullPointerException:尝试在空对象引用上调用接口方法'com.badlogic.gdx.files.FileHandle com.badlogic.gdx.Files.internal(java.lang.String)'在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)在android.app.ActivityThread.-wrap11(未知来源:0)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1696)在android.os.Handler.dispatchMessage(Handler.java:105)在android.os.Looper.loop(Looper.java:164)在android.app.ActivityThread.main(ActivityThread.java:6944)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:327)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)引起原因:com.badlogic.gdx.utils.GdxRuntimeException:java.lang.NullPointerException:尝试调用接口方法'com.badlogic.gdx.files.FileHandle com.badlogic.gdx.Files.internal(java.lang.String) '在空对象引用上在com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:636)在com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:411)在com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:437)原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法'com.badlogic.gdx.files.FileHandle com.badlogic.gdx.Files.internal(java.lang.String)'在com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver.resolve(InternalFileHandleResolver.java:26)在com.badlogic.gdx.assets.loaders.AssetLoader.resolve(AssetLoader.java:42)在com.badlogic.gdx.assets.AssetLoadingTask.resolve(AssetLoadingTask.java:148)在com.badlogic.gdx.assets.AssetLoadingTask.handleSyncLoader(AssetLoadingTask.java:99)在com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:88)在com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:561)在com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:409)在com.badlogic.gdx.assets.AssetManager.finishLoading(AssetManager.java:437)上]

我知道代码不是问题,因为我在以前的项目中使用了相同的代码,但没有收到此错误,但是为了完整性,我将共享这些代码。最近的更新是否中断了资产管理器/更改了其工作方式,还是由其他原因引起的?

    assetManager.load("uiskin.atlas", TextureAtlas.class);
    assetManager.finishLoading(); //The error occurs here, I can only assume the same error would 
                                  //occur the next time this is called, because execution stops here.
    assetManager.load("uiskin.json", Skin.class, new SkinParameter("uiskin.atlas"));
    assetManager.finishLoading();
    uiskin = assetManager.get("uiskin.json");
java android nullpointerexception libgdx
1个回答
0
投票

您的代码将在初始化libGDX之前运行。问题不在于资产管理器,而是未初始化的内部变量。

© www.soinside.com 2019 - 2024. All rights reserved.