android - para - google places sdk
usando enableAutoManage() en fragmento (4)
Disculpe la respuesta tardía, pero en lugar de extender FragmentActivity, puede extender AppCompatActivity ...
public class YourActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
.....
mCredentialsApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.enableAutoManage(this,this)
.addApi(Auth.CREDENTIALS_API)
.build();
¿Hay otra forma de conectar el cliente API de Google?
Uso lugares de autocompletar y tengo que usar este código en algún lugar de MYFRAGMENT
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this).build();
Mi problema con
enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this).build();
No puedo lidiar con esto porque cuando reemplazo
this
con
getActivity()
tengo muchos problemas con el casting
Gracias por la ayuda y perdón si esta pregunta es tonta.
Mi solución es similar a la respuesta aceptada, excepto que uso la segunda firma de Builder para que connectionFailedListener también se envíe al constructor.
Seguido por
mGoogleApiClient.connect()
y
mGoogleApiClient.disconnect()
en
onStart()
y
onStop()
respectivamente
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(this /*context*/ , this /*connectedListener*/, this /**connectionFailedListener/)
.addApi(Places.GEO_DATA_API)
.build();
}
Si desea utilizar
enableAutoManage
, debe hacer que su actividad extienda
FragmentActivity
.
Las devoluciones de llamada que realiza son necesarias para que
GoogleApiClient
la administración automática de
GoogleApiClient
.
Entonces, la solución más fácil es agregar
extends FragmentActivity
a su actividad.
Entonces su elenco no fallará y provocará que la aplicación se bloquee en tiempo de ejecución.
La solución alternativa es administrar el cliente api usted mismo.
enableAutoManage
eliminar la línea
enableAutoManage
del constructor y asegurarse de
connect
/
disconnect
del cliente usted mismo.
El lugar más común para hacer esto es
onStart()
/
onStop()
.
Algo como...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.addConnectionCallbacks(this).build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
mGoogleApiClient.disconnect();
}
Si su fragmento se está ejecutando en FragmentActivity o AppCompatActivity, puede hacer algo como esto:
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.enableAutoManage((FragmentActivity) getActivity() /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
// your code here
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();