2017-04-17 5 views
0

私はアンドロイドのプログラミングには新しく、しばらくの間この問題を抱えています。私は、getMapAsync()が廃止され、getMapAsync()に置き換えられたと読んでいます しかし、フラグメントリソースを使用していて、今までマップのフラグメントリソースを必要としなかったので、getMayAsync() 。すべてのヘルプははるかに高く評価されるだろうgetMap()を解決できないか、getMapAsync()で置き換えられません。

public class RunMapFragment extends SupportMapFragment { 
    private static final String ARG_RUN_ID = "RUN_ID"; 
    private GoogleMap mGoogleMap; 
    public static RunMapFragment newInstance(long runId) { 
     Bundle args = new Bundle(); 
     args.putLong(ARG_RUN_ID, runId); 
     RunMapFragment rf = new RunMapFragment(); 
     rf.setArguments(args); 
     return rf; 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, 
          Bundle savedInstanceState) { 
     View v = super.onCreateView(inflater, parent, savedInstanceState); 
     mGoogleMap = getMap(); //Error here 
     mGoogleMap.setMyLocationEnabled(true); 
     return v; 
    } 
} 

は、ここに私のコードです。 getMap()を使用できるバージョン9のmap APIの最小限のsdkをロールバックすることはできますか?

答えて

1

getMap()方法was deprecated and then removedですので、代わりにgetMapAsync()を使用する必要があります。

フラグメントがSupportMapFragmentを直接拡張する場合、onCreateView()を上書きする必要はありません。

代わりに、ちょうどonResume()オーバーライドからgetMapAsync()を呼び出し、onMapReady()オーバーライドで返されたGoogleマップの参照を使用します。

public class RunMapFragment extends SupportMapFragment { 
    private static final String ARG_RUN_ID = "RUN_ID"; 
    private GoogleMap mGoogleMap; 
    public static RunMapFragment newInstance(long runId) { 
     Bundle args = new Bundle(); 
     args.putLong(ARG_RUN_ID, runId); 
     RunMapFragment rf = new RunMapFragment(); 
     rf.setArguments(args); 
     return rf; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (mGoogleMap == null) { 
      getMapAsync(this); 
     } 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mGoogleMap = googleMap; 
     mGoogleMap.setMyLocationEnabled(true); 
    } 
} 

注あなたは、API-23以上をターゲットにしている場合、あなたのだろうと詳細については、my answer hereを参照して、setMyLocationEnabled()メソッドを使用する前に、ユーザーが実行時に場所の許可を承認していることを確認する必要があります。

+0

私のために働いてくれてありがとう! –

関連する問題