Менеджер ресурсов Libgdx Fini sh метод загрузки не работает, исключение пустого указателя - PullRequest
0 голосов
/ 22 апреля 2020

Я создал новый проект libgdx android и, как видно из заголовка, я получаю исключение нулевого указателя при использовании диспетчера активов. У меня никогда не было этой проблемы в более ранних проектах, поэтому я нахожу это очень странным, и я не нашел другой ссылки на эту проблему в inte rnet. Файлы находятся в папке android assets, так что это не проблема.

Трассировка стека выглядит следующим образом:

java .lang.NullPointerException: Попытка вызвать метод интерфейса 'com.badlogi c .gdx.files.FileHandle com.badlogi c .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 (Обработчик. java: 105) в android .os.Looper.l oop (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.badlogi c. gdx.util s.GdxRuntimeException: java .lang.NullPointerException: попытка вызвать метод интерфейса 'com.badlogi c .gdx.files.FileHandle com.badlogi c .gdx.Files.internal (java .lang.String ) 'для пустой ссылки на объект в com.badlogi c .gdx.assets.AssetManager.handleTaskError (AssetManager. java: 636) в com.badlogi c .gdx.assets.AssetManager.update (AssetManager. java: 411) at com.badlogi c .gdx.assets.AssetManager.finishLoading (AssetManager. java: 437) Причина: java .lang.NullPointerException: Попытка вызвать метод интерфейса 'com.badlogi c .gdx.files.FileHandle com.badlogi c .gdx.Files.internal (java .lang.String) 'для ссылки на пустой объект в com.badlogi c .gdx.assets.loaders.resolvers .InternalFileHandleResolver.resolve (InternalFileHandleResolver. java: 26) в com.badlogi c .gdx.assets.loaders.AssetLoader.resolve (AssetLoader. java: 42) в com.badlogi c .gdx. .AssetLoadingTask.resolve (AssetLoadingTask. java: 148) в com.badlogi c .gdx.assets.AssetLo adingTask.handleSyncLoader (AssetLoadingTask. java: 99) в com.badlogi c .gdx.assets.AssetLoadingTask.update (AssetLoadingTask. java: 88) в com.badlogi c .gsetset. updateTask (AssetManager. java: 561) в com.badlogi c .gdx.assets.AssetManager.update (AssetManager. java: 409) в com.badlogi c .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");

1 Ответ

0 голосов
/ 23 апреля 2020

Ваш код выполняется до того, как libGDX завершит инициализацию. Проблема не в активе менеджера, а в неинициализированной внутренней переменной.

...