2016-06-21 16 views
2

MapViewをXMLファイルに展開するときにエラーが発生する。 アクセストークンは正しいはずです。また、マニフェストにはテレマティクスも含まれています。私はマップボックスのこれらのバージョンを使用します'com.mapbox.mapboxsdk:mapbox-android-sdk:[email protected]'レイアウトファイルでMapViewを拡張しようとするとエラーが発生する

私のレイアウトファイルです。

<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); 
} 

} `

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"に変更しましたが、2番目の方法では問題は解決しません。 – MTwain

+0

@twain、私は完全に私の答えを変えました。これが正しければ受け入れてください。 – RobLabs

+0

本当に涼しいです...私はSOとgithubのrealtivですが、今は大きな利点を知っています。 – MTwain

0

私はそれがメモリの問題かもしれないと思います。私は複雑なビューを膨らませることで同様の問題を抱えていた地図の幅と高さを減らすようにしてください。

+0

私はマップオブジェクトを減らしますが、動作しませんし、同じエラーを示しています。 :( – MTwain

-1

代わりに、活動にアプリケーションクラス

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

を追加する必要があります。

関連する問題