助けてください<\/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 String filename;
private static String mmpkFilePath;
private MapView mMapView;
private MobileMapPackage mapPackage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ディレクトリを取得
extSDCardDirName = Environment.getExternalStorageDirectory() + File.separator + "mmm/";
// モバイルマップパッケージのファイル名を取得
filename = "maps.mmpk";
// モバイルマップパッケージファイルへのフルパスを作成
mmpkFilePath = extSDCardDirName + filename;
Log.d("FilePath", mmpkFilePath);
// レイアウトからMapViewを取得
mMapView = (MapView) findViewById(R.id.map);
loadMobileMapPackage(mmpkFilePath);
}
private void loadMobileMapPackage(String mmpkFile) {
// モバイルマップパッケージを作成
mapPackage = new MobileMapPackage(mmpkFile);
// モバイルマップパッケージを非同期で読み込む
mapPackage.loadAsync();
// モバイルマップパッケージの読み込み完了時に呼ばれるリスナーを追加
mapPackage.addDoneLoadingListener(new Runnable() {
@Override
public void run() {
// 読み込み状態とモバイルマップパッケージにマップがあるか確認
if (mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// モバイルマップパッケージからマップをMapViewに設定
mMapView.setMap(mapPackage.getMaps().get( style="color: #6897bb;">0));
mMapView.setAttributionTextVisible(false);
} else {
// モバイルマップパッケージの読み込みに失敗した場合に問題をログに記録します
Log.e(TAG, mapPackage.getLoadError().getMessage());
}
}
});
}}
エラーは次のとおりです:
04-15 12:00:43.653 7426-7426/ com.mytest.mymap E/AndroidRuntime: FATAL EXCEPTION: main
プロセス: com. mytest.mymap, PID: 7426
java.lang.NullPointerException: null オブジェクト参照で仮想メソッド 'void com.esri.arcgisruntime.mapping.view.MapView.setMap(com.esri.arcgisruntime.mapping.ArcGISMap)' を呼び出そうとしました
at com. mytest.mymap.MapActivity$1.run(MapActivity.java:77)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5389)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)
次の条件が true の場合、mapPackage の値は null ではありません
if (mapPackage.getLoadStatus() == LoadStatus.LOADED && !mapPackage.getMaps().isEmpty()) {
// モバイルマップパッケージから MapView にマップを追加します
mMapView.setMap(mapPackage.getMaps().get(0));
mMapView.setAttributionTextVisible(false);
}