Por favor, me ajude<\/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<\/SPAN>:<\/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 <\/SPAN>String filename<\/SPAN>;
<\/Span> Private Static String MmpkFilePath ;;\n Private MapView mMapView ;;\n Private MobileMapPackage mapPackage ;;\n@Override \n Protected Void OnCreate (Bundle SavedInstanceState) { \n Super.OnCreate(SavedInstanceState); \n SetContentView(R.Layout. Activity_Main );
// Obter o diretório
extSDCardDirName =Environment.getExternalStorageDirectory() + File.separator + "mmm/";;
// obter o nome do arquivo do pacote de mapa móvel
filename = "maps.mmpk";;
// criar o caminho completo para o arquivo do pacote de mapa móvel
mmpkFilePath = extSDCardDirName + filename;;
Log.d("FilePath", mmpkFilePath);
// recuperar o MapView do layout
mMapView = (MapView) findViewById(R.id.map);
loadMobileMapPackage(mmpkFilePath);
}
private void loadMobileMapPackage(String mmpkFile) {
// criar o pacote de mapa móvel
mapPackage = new MobileMapPackage(mmpkFile);
// carregar o pacote de mapa móvel assincronamente
mapPackage.loadAsync();
// adicionar listener que será invocado quando o pacote de mapa móvel for carregado
mapPackage.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
// verificar status do carregamento e se o pacote de mapa móvel tem mapas
if(mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// adicionar o mapa do pacote de mapa móvel ao MapView
mMapView.setMap(mapPackage.getMaps().get(< style="color: #6897bb;">0));
mMapView.setAttributionTextVisible(false);
} else {
// registrar um problema se o pacote de mapa móvel falhar ao carregar
Log.e(TAG, mapPackage.getLoadError().getMessage());
}
}
});
}}
O erro é:
04-15 12:00:43.653 7426-7426/ com.mytest.mymap E/AndroidRuntime: EXCEÇÃO FATAL: principal
Processo: com. mytest.mymap, PID: 7426
java.lang.NullPointerException: Tentativa de invocar o método virtual 'void com.esri.arcgisruntime.mapping.view.MapView.setMap(com.esri.arcgisruntime.mapping.ArcGISMap)' em uma referência de objeto nula
em com. mytest.mymap.MapActivity$1.run(MapActivity.java:77)
em android.os.Handler.handleCallback(Handler.java:739)
em android.os.Handler.dispatchMessage(Handler.java:95)
em android.os.Looper.loop(Looper.java:211)
em android.app.ActivityThread.main(ActivityThread.java:5389)
em java.lang.reflect.Method.invoke(Native Method)
em java.lang.reflect.Method.invoke(Method.java:372)
em com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
em com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
Quando a seguinte condição é true, o valor mapPackage não é nulo
if (mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// adicionar o mapa do pacote de mapa móvel ao MapView
mMapView.setMap(mapPackage.getMaps().get(0));
mMapView.setAttributionTextVisible(false);
}