2013-01-16 55 views
3

我想運行Google Maps API V2的示例代碼。我跟着these步驟,但出現問題。在大多數活動中,我有一個編譯器錯誤。Google地圖API V2中的@Override錯誤示例代碼

Error: The method activate(LocationSource.OnLocationChangedListener) of type LocationSourceDemoActivity.LongPressLocationSource must override a superclass method

在下面的代碼,這些方法得到了一個錯誤:

public void activate(OnLocationChangedListener listener) 
public void deactivate() 
public void onMapLongClick(LatLng point) 

代碼:

package com.example.mapdemo; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener; 
import com.google.android.gms.maps.LocationSource; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 

import android.app.Activity; 
import android.location.Location; 
import android.os.Bundle; 


/** 
* This shows how to use a custom location source. 
*/ 
public class LocationSourceDemoActivity extends android.support.v4.app.FragmentActivity { 
    /** 
    * A {@link LocationSource} which reports a new location whenever a user long presses the map at 
    * the point at which a user long pressed the map. 
    */ 
    private static class LongPressLocationSource implements LocationSource, OnMapLongClickListener { 
     private OnLocationChangedListener mListener; 
    /** 
    * Flag to keep track of the activity's lifecycle. This is not strictly necessary in this 
    * case because onMapLongPress events don't occur while the activity containing the map is 
    * paused but is included to demonstrate best practices (e.g., if a background service were 
    * to be used). 
    */ 
    private boolean mPaused; 

    @Override 
    public void activate(OnLocationChangedListener listener) { 
     mListener = listener; 
    } 

    @Override 
    public void deactivate() { 
     mListener = null; 
    } 

    @Override 
    public void onMapLongClick(LatLng point) { 
     if (mListener != null && !mPaused) { 
      Location location = new Location("LongPressLocationProvider"); 
      location.setLatitude(point.latitude); 
      location.setLongitude(point.longitude); 
      location.setAccuracy(100); 
      mListener.onLocationChanged(location); 
     } 
    } 

    public void onPause() { 
     mPaused = true; 
    } 

    public void onResume() { 
     mPaused = false; 
    } 

} 

private LongPressLocationSource mLocationSource; 

private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.basic_demo); 

    mLocationSource = new LongPressLocationSource(); 

    setUpMapIfNeeded(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    setUpMapIfNeeded(); 

    mLocationSource.onResume(); 
} 

private void setUpMapIfNeeded() { 
    // Do a null check to confirm that we have not already instantiated the map. 
    if (mMap == null) { 
     // Try to obtain the map from the SupportMapFragment. 
     mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
     // Check if we were successful in obtaining the map. 
     if (mMap != null) { 
      setUpMap(); 
     } 
    } 
} 

private void setUpMap() { 
    mMap.setLocationSource(mLocationSource); 
    mMap.setOnMapLongClickListener(mLocationSource); 
    mMap.setMyLocationEnabled(true); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mLocationSource.onPause(); 
} 
} 

我重視圖書館,我沒有跳過谷歌從指南的一個步驟。 我希望有人能幫助我!

回答

4

你使用符合java 1.6的編譯器嗎?使用@Override註釋在1.5和1.6中有所不同(請參閱this answer)。

右鍵單擊你的項目節點,選擇「屬性」 - >「Java編譯器」 - >「編譯器符合級別」應該是1.6。

+0

我現在正在使用1.5 –

+0

謝謝解決了我的問題! –

+0

不客氣! –