2016-07-15 1 views
1

Google Play 서비스로 위치 정보를 얻기 위해 작은 앱을 만들려고합니다. 문제는 항상이 오류가 발생하며 이유를 모르겠습니다. 여기 Android Studio는 추상적이 아니며 추상적 인 메소드를 무시하지 않습니다.

코드입니다 :

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GooglePlayServicesUtil; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
//import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 

public class Principal extends AppCompatActivity implements ConnectionCallbacks, OnConnectionFailedListener { 

    private GoogleApiClient mGoogleApiClient; 

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

    gps = new MockLocationProvider(LocationManager.GPS_PROVIDER, Principal.this); 
    net = new MockLocationProvider(LocationManager.NETWORK_PROVIDER, Principal.this); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addApi(LocationServices.API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .build(); 

    mGoogleApiClient.connect(); 

    } 
} 

그리고 오류는 다음과 같습니다

Error:(116, 41) error: incompatible types: Principal cannot be converted to ConnectionCallbacks 

:

Error:(74, 8) error: Principal is not abstract and does not override abstract method onConnectionSuspended(int) in ConnectionCallbacks 

나는 ConnectionCallbacks, OnConnectionFailedListener, 나는이 오류가 구현되지 않는 경우 이 옵션을 삭제하면

.addConnectionCallbacks(this) 
.addOnConnectionFailedListener(this) 

ConnectionCallbacks, OnConnectionFailedListener, 나는 오류가 없지만 GooglePlay Service은 연결되어 있지 않습니다.

나는이 Gradle을에 있습니다 : 내가 잘못

compile 'com.google.android.gms:play-services-location:7.3.0' 

을하고있어 무엇?

고맙습니다.

답변

1

즉각적인 오류는 Principal이 해당 인터페이스에 정의 된 모든 메소드를 구현하지 않고 ConnectionCallbacks 인터페이스를 구현하는 것으로 선언 됨으로 인해 발생합니다.

abstract void onConnected(Bundle connectionHint)
abstract void onConnectionSuspended(int cause)

당신은 그들 모두의 구현을 제공해야 후 첫 번째 오류가 멀리 가야 지적 다음 Javadoc for ConnectionCallbacks에서 우리는이 인터페이스는 두 가지 방법이 포함되어 있음을 볼 수 있습니다. 이 문제를 해결 한 후에 나타나는 코드에 다른 문제가있을 수 있습니다.

관련 문제