2016-06-21 2 views
2

У меня возникла ошибка, когда дело доходит до раздувания MapView в XML-файле. Токен доступа должен быть правильным, и я также включаю телематику в манифест. Я использую эту версию mapbox 'com.mapbox.mapboxsdk:mapbox-android-sdk:[email protected]'Ошибка при надувании MapView в Layout-файле

Вот мой макет-файл.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:mapbox="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity"> 

<com.mapbox.mapboxsdk.maps.MapView 
    android:id="@+id/mapviewmapbox" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    mapbox:access_token="@string/accessToken" 
    mapbox:center_latitude="40.73581" 
    mapbox:center_longitude="-73.99155" 
    mapbox:style_url="mapbox://styles/mapbox/streets-v9" 
    mapbox:zoom="11" /> 

</RelativeLayout>` 

И Java-файла:

package de.example.navdrawemap_2.maptest.Maps; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 

import com.mapbox.mapboxsdk.maps.MapView; 
import com.mapbox.mapboxsdk.maps.MapboxMap; 
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; 

import de.example.navdrawemap_2.maptest.R; 

public class MapMapboxActivity extends AppCompatActivity { 
private MapView mapView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map_mapbox); 

    mapView = (MapView) findViewById(R.id.mapviewmapbox); 
    mapView.onCreate(savedInstanceState); 

    mapView.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(MapboxMap mapboxMap) { 


     }}); 
} 

     /* 
    TextView textViewTitle = (TextView)findViewById(R.id.texttitel); 
    TextView textViewTitleBig = (TextView)findViewById(R.id.texttitel_big); 
    TextView textViewSnippet = (TextView)findViewById(R.id.textsnippet); 
    Intent intentbundleStrings = getIntent(); 

    if (intentbundleStrings != null) { 
        textViewTitleBig.setText(intentbundleStrings.getStringExtra("title")); 
     // textViewTitle.setText(intentbundleStrings.getStringExtra("title")); 
     // Titel im Header nachtragen 
     textViewSnippet.setText(intentbundleStrings.getStringExtra("snippet")); 
    }else{ 
     textViewTitle.setText(intentbundleStrings.getStringExtra("N.A.")); 
     textViewSnippet.setText(intentbundleStrings.getStringExtra("N.A.")); 
    } */ 




// Add the mapView lifecycle to the activity's lifecycle methods 
@Override 
public void onResume() { 
    super.onResume(); 
    mapView.onResume(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mapView.onPause(); 
} 

@Override 
public void onLowMemory() { 
    super.onLowMemory(); 
    mapView.onLowMemory(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    mapView.onDestroy(); 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mapView.onSaveInstanceState(outState); 
} 

} `

The LogCat показывает следующее:

06-21 15:46:06.753 13892-13892/de.example.navdrawemap_2.maptest E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: de.example.navdrawemap_2.maptest, PID: 13892 
                       java.lang.RuntimeException: Unable to start activity ComponentInfo{de.example.navdrawemap_2.maptest/de.example.navdrawemap_2.maptest.Maps.MapMapboxActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class com.mapbox.mapboxsdk.maps.MapView 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198) 
                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257) 
                        at android.app.ActivityThread.access$800(ActivityThread.java:139) 
                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210) 
                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5086) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132) 
                        at dalvik.system.NativeStart.main(Native Method) 
                       Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class com.mapbox.mapboxsdk.maps.MapView 

ответ

0

@twain, к счастью, вы отправили свой код в Github. Источником проблемы были разрешения.

Адрес Github commit that fixes this up.

Ключ, который я видел, был в журнале, ключевая строка источника для андроидных разрешений находится здесь.

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/mapbox/mapboxsdk/location/LocationServices;

Это очень загадочно, но перед этим я столкнулся с этой проблемой, поэтому это привело меня к решению.

Вы нужны

android.permission.ACCESS_WIFI_STATE 

вместо

android.permission.ACCESS_NETWORK_STATE 

Я также сбросить MapBox Android SDK к последней версии, но я не уверен, что это было аффекта.

compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:[email protected]'){ 
    transitive=true 
} 

Вот пример карты Mapbox из вашего приложения через Потсдам.

Mapbox Map

+0

Я добавляю имя пакета, а также менял инструменты: контекст на «.Maps.MapMapboxActivity», но второй не решает проблему. Что вы имеете в виду под «И имя вашего класса -»? заранее, – MTwain

+0

@twain, я полностью изменил свой ответ. Примите, если это правильно. – RobLabs

+0

Спасибо большое! Действительно круто ... Я реален новый для SO и github, но теперь я знаю большие преимущества. – MTwain

0

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

+0

Не совсем. Я уменьшаю объект map, но он не работает и показывает ту же ошибку. :( – MTwain

-1

Вам нужно добавить

Mapbox.getInstance(getApplicationContext(), "MY_DEFAULT_PUBLIC_API_KEY"); 

В классе приложений вместо активности.

Смежные вопросы