2017-03-27 22 views
2

我从另一个类调用checkLocationOn方法

// 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方法GoogleApiClient。

// 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; 

} 

同时初始化GoogleApiClient我的应用力停止给错误

03-27 16:43:13.930 5118-5118 /? E/AndroidRuntime:致命例外:main 进程:com.demo.FetchLocation,PID:5118 java.lang.ClassCastException:com.demo.FetchLocation.Profile无法转换为com.google.android.gms.common.api。 GoogleApiClient $ ConnectionCallbacks at com.demo.FetchLocation.GetLocation.buildGoogleApiClient(GetLocation.java:75) at com.demo.FetchLocation.GetLocation.checkLocationOn(GetLocation.java:68) at com.demo.FetchLocation.Profile $ 2。 onClick(Profile.java:128) at android.view.View.performClick(View.java:5269) at android.view.View $ PerformClick.run(View.java:21556) at android.os.Handler。 handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5769) at java .lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:679)

有没有人有解决方案?

+0

完整堆栈跟踪 –

+0

'Profile'类是一个Activity吗? – fluffyBatman

+0

yess个人资料是一个活动 –

回答

1

有你Profile活动实现既GoogleApiClient.ConnectionCallbacksGoogleApiClient.OnConnectionFailedListener接口。

当你执行以下,

.addConnectionCallbacks((GoogleApiClient.ConnectionCallbacks) context) 
      .addOnConnectionFailedListener((GoogleApiClient.OnConnectionFailedListener) context) 

你实际上并没有在你传递的上下文中,而你的情况,属于个人活动实施的这些接口。

+0

谢谢!那工作...我忘了执行那些在配置文件活动 –

+0

很高兴它的工作。你能否也将我的答案标记为已接受? :) – fluffyBatman

0

按照official documentation,正确的方法调用:

if (mGoogleApiClient == null) { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .addApi(LocationServices.API) 
     .build(); 
} 
0
protected static synchronized void buildGoogleApiClient(Context context){ 
mGoogleApiClient = new GoogleApiClient.Builder(context) 
     .addApi(LocationServices.API) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
mGoogleApiClient.connect(); 
createLocationRequest(); 
return; 

} 

编写这个程序并实现您在accnic中实现的接口的所有方法。

相关问题