studio places para google example clave address android android-fragments google-places-api google-api-client

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();