LoginSignup
2
1

More than 5 years have passed since last update.

MapFragmentを使って自分のアプリにGoogleMapを表示した

Last updated at Posted at 2018-01-17

この記事において前提としていること

Android Studio 3.0.1 でアンドロイド開発の勉強をしています。
Fragmentを理解する必要があることを悟り、Fragmentを用いてタブを実装するチュートリアル(?)を写経しました。

Google Map Activityを追加する

AndroidStudioのプロジェクト名の上で右クリック → New → Google → Google Map Activityをクリックして自分のプロジェクトにGoogleMapのアクティビティを追加。
生成されたgoogle_maps_api.xmlにご丁寧にも"TODO: Before you run your application, you need a Google Maps API key. To get one, follow this link, follow the directions and press "Create" at the end:"という説明書きとともにAPIキー取得のURLが書かれていたので、そのページからAPIキーを取得。
キーを以下の所に追加。

google_maps_api.xml
<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">ここ</string>

MainActivity.javaでcom.google.android.gms.maps.MapFragment;をimport。
FragmentTabHost#addTab()の第二引数にTabのContentとなるクラスを渡しているので、MapFragment.classを渡してあげる。
エミュレータを起動し、GoogleMapを追加した”TAB 3”を選択すると、以下の画像のようにGoogleMapが表示されました!
Screenshot_1516200883.png

実質3行に手を加えるだけでGoogleMapが追加できました。すごい。

最終的なMainActivity.java

MainActivity.java

package com.example.kouhei.tabapplication;

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.os.Bundle;
import com.google.android.gms.maps.MapFragment; // MapFragmentをimport

public class MainActivity extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        mTabHost = (FragmentTabHost)findViewById(R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.tabContent);

        // "FragmenteTab"は自分で実装するクラス
        // addTab()の第一引数がTabSpec、第二引数は表示するFragmentをclass名で渡す。第三引数はFragmentで読み込むデータをBundleで渡す。
        // TabSpecはタブの情報
        // setIndicator()はタブのView
        mTabHost.addTab(
                mTabHost.newTabSpec("tab1").setIndicator("Tab 1", getDrawable(R.drawable.ic_spa_black_24dp)),
                FragmentTab.class,
                null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab2").setIndicator("Tab 2", getDrawable(R.drawable.ic_sentiment_satisfied_black_24dp)),
                FragmentTab.class,
                null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab3").setIndicator("Tab 3", getDrawable(R.drawable.ic_android_black_24dp)),
                MapFragment.class, // ここに書いてあったFragmentTabを書き換えました。
                null);
    }
}

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1