Nano Hash - криптовалюты, майнинг, программирование

Сбой Android на 'boolean com.mapbox.mapboxsdk.maps.Style.isFullyLoaded()' при нулевой ссылке на объект,

Привет, я пытаюсь использовать MapBox для навигации и получаю такой сбой.

2019-01-20 19:00:16.331 32005-32005/com.example.mapboxtest E/Mbgl-MapChangeReceiver: Exception in onDidFinishLoadingStyle
android.content.res.Resources$NotFoundException: Resource ID #0xffffffff
    at android.content.res.ResourcesImpl.getValueForDensity(ResourcesImpl.java:225)
    at android.content.res.Resources.getDrawableForDensity(Resources.java:887)
    at android.content.res.Resources.getDrawable(Resources.java:827)
    at android.content.Context.getDrawable(Context.java:626)
    at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463)
    at com.mapbox.mapboxsdk.location.Utils.getDrawable(Utils.java:75)
    at com.mapbox.mapboxsdk.location.LayerBitmapProvider.generateBitmap(LayerBitmapProvider.java:26)
    at com.mapbox.mapboxsdk.location.LocationLayerController.styleForeground(LocationLayerController.java:303)
    at com.mapbox.mapboxsdk.location.LocationLayerController.applyStyle(LocationLayerController.java:109)
    at com.mapbox.mapboxsdk.location.LocationLayerController.initializeComponents(LocationLayerController.java:92)
    at com.mapbox.mapboxsdk.location.LocationLayerController.<init>(LocationLayerController.java:84)
    at com.mapbox.mapboxsdk.location.LocationComponent.initialize(LocationComponent.java:991)
    at com.mapbox.mapboxsdk.location.LocationComponent.activateLocationComponent(LocationComponent.java:292)
    at com.mapbox.services.android.navigation.ui.v5.map.NavigationMapboxMap.initializeLocationComponent(NavigationMapboxMap.java:549)
    at com.mapbox.services.android.navigation.ui.v5.map.NavigationMapboxMap.<init>(NavigationMapboxMap.java:80)
    at com.example.mapboxtest.MainActivity$1.onStyleLoaded(MainActivity.java:45)
    at com.mapbox.mapboxsdk.maps.MapboxMap.notifyStyleLoaded(MapboxMap.java:835)
    at com.mapbox.mapboxsdk.maps.MapboxMap.onFinishLoadingStyle(MapboxMap.java:202)
    at com.mapbox.mapboxsdk.maps.MapView$MapCallback.onDidFinishLoadingStyle(MapView.java:1164)
    at com.mapbox.mapboxsdk.maps.MapChangeReceiver.onDidFinishLoadingStyle(MapChangeReceiver.java:194)
    at com.mapbox.mapboxsdk.maps.NativeMapView.onDidFinishLoadingStyle(NativeMapView.java:979)
    at android.os.MessageQueue.nativePollOnce(Native Method)
    at android.os.MessageQueue.next(MessageQueue.java:326)
    at android.os.Looper.loop(Looper.java:160)
    at android.app.ActivityThread.main(ActivityThread.java:6892)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)

Это зависимости, которые я использую сейчас

 // MAP BOX
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:7.0.1'
implementation 'com.mapbox.mapboxsdk:mapbox-android-navigation-ui:0.27.0'

Вот где я получаю крах

     @Override
    public void onMapReady(@NonNull MapboxMap mapboxMap) {
        mMapboxMap = mapboxMap;
        mapboxMap.setStyle(new Style.Builder().fromUrl(getString(R.string.navigation_guidance)), new Style.OnStyleLoaded() {
            @Override
            public void onStyleLoaded(@NonNull Style style) {
//                enableLocationComponent();
                if (style.isFullyLoaded()) {
                    navigationMap = new NavigationMapboxMap(mapView, mMapboxMap);
//
//                // For Location updates
//                initializeLocationEngine();
//
//                // For navigation logic / processing
//        initializeNavigation(mMapboxMap);
                    navigationMap.updateCameraTrackingMode(NavigationCamera.NAVIGATION_TRACKING_MODE_NONE);
                }
            }
        });
    }

Эта строка вызывает проблему

navigationMap = new NavigationMapboxMap (mapView, mMapboxMap);

Я проверил эту ссылку https://github.com/mapbox/mapbox-gl-native/wiki/Android-6.x-to-7.x-migration-guide

и нашел что-то вроде этого

Чтобы избежать java.lang.NullPointerException: попытка вызвать виртуальный метод 'boolean com.mapbox.mapboxsdk.maps.Style.isFullyLoaded()' для нулевой ссылки на объект, предоставленный параметр стиля в методе LocationComponent#activate должен быть @NonNull и полностью загружен. Лучший способ — передать стиль, указанный в обратном вызове OnStyleLoaded.

Но все равно не повезло.


  • Вы проверили [ComponentNavigationActivity#onMapReady][1] в тестовом приложении? Кажется, вы используете аналогичную настройку, хотя здесь она не дает сбоев. Не могли бы вы добавить дополнительную информацию для воспроизведения сбоя или какие-либо другие особенности вашей установки? Это было бы очень полезно, потому что без дополнительной информации я не могу воспроизвести. [1]: github.com/mapbox/mapbox-navigation-android/blob/master/app/src/ 21.01.2019

Ответы:


1

Я столкнулся с той же проблемой и перепробовал все решения. Я обновился до последней версии mapbox sdk 8.4.0 и следовал ComponentNavigationActivity#onMapReady, но все равно не повезло.

Затем я обнаружил, что нам нужно поставить:

<item name="navigationViewLocationLayerStyle">@style/NavigationLocationLayerStyle</item>

внутри пользовательского стиля представления инструкций и примените его внутри onCreate() следующим образом:

setTheme(R.style.customInstructionView);

Это решило проблему. Я надеюсь, что это помогает!

03.10.2019

2

https://github.com/mapbox/mapbox-navigation-android/issues/1692 собирается исправить это, предоставив значение по умолчанию, если допустимый стиль не найден. А пока вы можете добавить этот фрагмент в свой style.xml, чтобы исправить:

<item name="navigationViewLocationLayerStyle">@style/NavigationLocationLayerStyle</item>

23.01.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..