Java 无法将活动强制转换为com.google.android.gms.common.api.GoogleAppClient$ConnectionCallbacks
我正在从另一个类调用checkLocationOn方法Java 无法将活动强制转换为com.google.android.gms.common.api.GoogleAppClient$ConnectionCallbacks,java,android,google-api,Java,Android,Google Api,我正在从另一个类调用checkLocationOn方法 // Change Address Click Action tvProfileChangeAddress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (Build.VERSION.SDK_INT >= 23) {
// Change Address Click Action
tvProfileChangeAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= 23) {
if ((checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED)) {
GetLocation.checkLocationOn(Profile.this);
}else{
AskPermissions.AskLocationPermission(Profile.this);
}
} else {
GetLocation.checkLocationOn(Profile.this);
}
}
});
我已经在CheckLocation方法中初始化了我的GoogleAppClient
// Building Google API Client
protected static synchronized void buildGoogleApiClient(Context context){
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks((GoogleApiClient.ConnectionCallbacks) context)
.addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) context)
.build();
mGoogleApiClient.connect();
createLocationRequest();
return;
}
在初始化GoogleAppClient时,我的应用程序强制停止给出错误消息
03-27 16:43:13.930 5118-5118/?E/AndroidRuntime:致命异常:主
进程:com.demo.FetchLocation,PID:5118
java.lang.ClassCastException:com.demo.FetchLocation.Profile不能强制转换为com.google.android.gms.common.api.GoogleAppClient$ConnectionCallbacks
位于com.demo.FetchLocation.GetLocation.buildGoogleAppClient(GetLocation.java:75)
在com.demo.FetchLocation.GetLocation.checkLocationOn(GetLocation.java:68)上
位于com.demo.FetchLocation.Profile$2.onClick(Profile.java:128)
在android.view.view.performClick上(view.java:5269)
在android.view.view$PerformClick.run(view.java:21556)
位于android.os.Handler.handleCallback(Handler.java:815)
位于android.os.Handler.dispatchMessage(Handler.java:104)
位于android.os.Looper.loop(Looper.java:207)
位于android.app.ActivityThread.main(ActivityThread.java:5769)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:789)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)
是否有人对此有解决方案???根据,正确的方法调用是:
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
让您的
Profile
活动同时实现GoogleAppClient.ConnectionCallbacks
和GoogleAppClient.OnConnectionFailedListener
接口
当你执行以下命令时
.addConnectionCallbacks((GoogleApiClient.ConnectionCallbacks) context)
.addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) context)
在传递的上下文中,您实际上没有实现任何这些接口,在您的情况下,这些接口属于概要活动
protected static synchronized void buildGoogleApiClient(Context context){
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
createLocationRequest();
return;
}
写下这篇文章,并实现您在活动中实现的所有接口方法。post full stack traceIs
Profile
class A Activity?是的,Profile是Profile
Activity的ActivityPost代码。谢谢!!这很有效。。。我忘了在profile活动中实现这些