[解決済み] フラグメント(ハニカム)でのMapView
質問
最終的なSDKはgoogle apisと一緒に公開されましたが、MapViewでFragmentを作成する最善の方法は何ですか?MapViewは正しく動作するためにMapActivityを必要とします。
フラグメントを管理するアクティビティに MapActivity を継承させ(フラグメントが自己完結しているという考えに反するため、悪い解決策です)、通常の xml ベースのレイアウトを使用すると、うまくいきません。MapActivity.setupMapView() で NullPointerException を受け取ります。
E/AndroidRuntime( 597): 原因:java.lang.NullPointerException E/AndroidRuntime( 597): at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:400) E/AndroidRuntime( 597): at com.google.android.maps.MapView.MapView(MapView.java:289) E/AndroidRuntime( 597): at com.google.android.maps.MapView.(MapView.java:264) E/AndroidRuntime( 597): at com.google.android.maps.MapView.(MapView.java:247)
私の2番目のアイデアは、プログラムでMapViewを作成し、関連するアクティビティを(getActivity()を介して)MapViewコンストラクタにContextとして渡すことでした。うまくいきません。
E/AndroidRuntime( 834): 原因:java.lang.IllegalArgumentException: MapViews は、MapActivity のインスタンスの内部でのみ作成することができます。 E/AndroidRuntime( 834): at com.google.android.maps.MapView.MapView(MapView.java:291) E/AndroidRuntime( 834): at com.google.android.maps.MapView.(MapView.java:235) E/AndroidRuntime( 834): at de.foo.FinderMapFragment.onCreateView(FinderMapFragment.java:225) E/AndroidRuntime( 834): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:708) E/AndroidRuntime( 834): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:900) E/AndroidRuntime( 834): at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:978) E/AndroidRuntime( 834): at android.app.Activity.onCreateView(Activity.java:4090) E/AndroidRuntime( 834): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)
本当は、MapViewが必要とするバックグラウンドスレッドを引き受けるMapFragmentのようなものがあるはずなのですが...。それで、これを行うための現在のベストプラクティスは何ですか?
ドイツからありがとう、そしてよろしく。 ヴァレンティン
どのように解決するのですか?
2012年12月3日現在、Googleは Google Maps Android API v2 . これで、これらの問題は忘れることができます。 https://developers.google.com/maps/documentation/android/
新しいAPIを使用した例 https://developers.google.com/maps/documentation/android/start#add_a_map
このAPIは少なくともAndroid API 8で動作しますので、使ってみてください ;)
ということで、フラグメントクラス(com.google.android.gms.maps.MapFragment")を使用することで簡単に実現できます。これで、Activityに地図が表示されます。上記のリンクからレイアウトの例をご覧ください。
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
関連
-
[解決済み] FragmentでonActivityResultが呼び出されない
-
[解決済み] ViewPagerでFragmentが表示されるタイミングを決定する方法
-
[解決済み] 新しいAndroid Fragmentをインスタンス化するためのベストプラクティス
-
[解決済み] フラグメントでのコンテキストの使用
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] 複数のフィルタを持つBroadcastReceiverか、複数のBroadcastReceiverか?
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] Recyclerviewと異なるタイプの行のインフレーションの処理
-
[解決済み] ViewPager with Google Maps API v2: 謎のブラックビュー