Bitte helft mir<\/P><\/DIV><\/DIV>
<\/P>
public class <\/SPAN>MainActivity extends <\/SPAN>AppCompatActivity {
Button btn<\/SPAN>;
<\/SPAN> <\/SPAN>@Override
<\/SPAN> <\/SPAN>protected void <\/SPAN>onCreate<\/SPAN>(Bundle savedInstanceState) {
super<\/SPAN>.onCreate(savedInstanceState);
<\/SPAN> <\/SPAN>setContentView(R.layout.activity_main<\/SPAN>);
<\/SPAN> <\/SPAN>btn<\/SPAN>=(Button)findViewById(R.id.button<\/SPAN>);
<\/SPAN> <\/SPAN>}
public void <\/SPAN>btnClick<\/SPAN>(View view) {
Intent intent = new <\/SPAN>Intent(MainActivity.this,<\/SPAN>MapActivity.class<\/SPAN>);
<\/SPAN> <\/SPAN>startActivity(intent);
<\/SPAN> <\/SPAN>}
}<\/PRE> <\/P> MapActivity:<\/P> <\/P>public class <\/SPAN>MapActivity extends <\/SPAN>AppCompatActivity {
private static final <\/SPAN>String TAG <\/SPAN>= MainActivity.class<\/SPAN>.getSimpleName();
<\/SPAN> private static <\/SPAN>String extSDCardDirName<\/SPAN>;
<\/Span> private static \String filename<\span\>;\
private static \String mmpkFilePath<\span\>;\
private \MapView mMapView<\span\>;\
private \MobileMapPackage mapPackage<\span\>;\
\@Override
\@Override
">protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Verzeichnis abrufen
extSDCardDirName = Environment.getExternalStorageDirectory() + File.separator + "mmm/";
// Dateiname des Mobile Map Package abrufen
filename = "maps.mmpk";
// Vollständigen Pfad zum Mobile Map Package erstellen
mmpkFilePath = extSDCardDirName + filename;
Log.d("FilePath", mmpkFilePath);
// MapView aus dem Layout abrufen
mMapView = (MapView) findViewById(R.id.map);
loadMobileMapPackage(mmpkFilePath);
}
private void loadMobileMapPackage(String mmpkFile) {
// Mobile Map Package erstellen
mapPackage = new MobileMapPackage(mmpkFile);
// Mobile Map Package asynchron laden
mapPackage.loadAsync();
// Listener hinzufügen, der aufgerufen wird, wenn das Mobile Map Package geladen wurde
mapPackage.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
// Ladezustand prüfen und sicherstellen, dass das Mobile Map Package Karten enthält
if (mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// Karte aus dem Mobile Map Package zur MapView hinzufügen
mMapView.setMap(mapPackage.getMaps().get( style="color: #6897bb;">0));
mMapView.setAttributionTextVisible(false);
} else {
// protokolliere ein Problem, wenn das mobile map package nicht geladen werden kann
Log.e(TAG, mapPackage.getLoadError().getMessage());
}
}
});
}}
Fehler ist:
04-15 12:00:43.653 7426-7426/ com.mytest.mymap E/AndroidRuntime: FATAL EXCEPTION: main
Prozess: com. mytest.mymap, PID: 7426
java.lang.NullPointerException: Versuch, die virtuelle Methode 'void com.esri.arcgisruntime.mapping.view.MapView.setMap(com.esri.arcgisruntime.mapping.ArcGISMap)' auf einer Nullobjektreferenz aufzurufen
bei com. mytest.mymap.MapActivity$1.run(MapActivity.java:77)
bei android.os.Handler.handleCallback(Handler.java:739)
bei android.os.Handler.dispatchMessage(Handler.java:95)
bei android.os.Looper.loop(Looper.java:211)
bei android.app.ActivityThread.main(ActivityThread.java:5389)
bei java.lang.reflect.Method.invoke(Native Method)
bei java.lang.reflect.Method.invoke(Method.java:372)
bei com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
bei com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Wenn die folgende Bedingung true ist, ist der Wert von mapPackage nicht null
if (mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// füge die Karte aus dem mobile map package zur MapView hinzu
mMapView.setMap(mapPackage.getMaps().get(0));
mMapView.setAttributionTextVisible(false);
}