Использование enableAutoManage () в фрагменте

Есть ли другой способ подключения клиента Google API?

Я использую автоматические полные места, и я должен использовать этот код, где в MYFRAGMENT

mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this) .addApi(Places.GEO_DATA_API) .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) .addConnectionCallbacks(this).build(); 

Моя проблема с

 enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) .addConnectionCallbacks(this).build(); 

Я не могу с этим справиться, потому что, когда я заменяю this getActivity() у меня много проблем с литьем

Спасибо за помощь и извините, если этот вопрос глупо.

Solutions Collecting From Web of "Использование enableAutoManage () в фрагменте"

Если вы хотите использовать enableAutoManage вы должны сделать свою деятельность расширенной FragmentActivity . Требуемые обратные вызовы необходимы для автоматического управления GoogleApiClient . Таким образом, самым простым решением является добавление extends FragmentActivity в вашу деятельность. Тогда ваш бросок не будет терпеть неудачу и приведет к сбою приложения во время выполнения.

Альтернативным решением является управление клиентом api самостоятельно. Вы удалили enableAutoManage строку enableAutoManage из строителя и убедитесь, что вы сами connect / disconnect от клиента. Наиболее распространенным местом для этого является onStart() / onStop() . Что-то вроде…

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

Если вы используете этот код внутри Fragment , предположим, что у вас есть HomeFragment который расширяет HomeFragment android.support.v4.app.Fragment , то внутри вашего класса HomeFragment вы должны иметь:

 HomeFragment homeFragmentContext; enableAutoManage(getActivity, GOOGLE_API_CLIENT_ID, homeFragmentContext) .addConnectionCallbacks(homeFragmentContext).build(); 

Если ваш фрагмент работает в FragmentActivity или AppCompatActivity, вы можете сделать что-то вроде этого:

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