2016-05-22 2 views
-2

Я попытался загрузить карту Google во фрагмент. Я не знаю, какими должны быть три линии ... (три строки прокомментировали «проблему!»).Использование GoogleApiClient во фрагменте Android

Большинство примеров используют «это» в скобках. Я понимаю, что это фрагмент, а не активность, поэтому я использовал «getActivity()». Но если я изменил все три строки на getActivity(), это тоже не сработало. Пожалуйста помоги! Заранее спасибо!

public class MapFragment extends Fragment implements OnMapReadyCallback,GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener,com.google.android.gms.location.LocationListener { 
private static final String TAG = "***MapFragment***"; 
private final int PERMISSION_CODE = 1; 
private GoogleApiClient myGoogleApiClient; 
private GoogleMap myMap; 
private Location curLocation; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_target, container, false); 

// create api client 
if (myGoogleApiClient == null) { 
    myGoogleApiClient = new GoogleApiClient.Builder(getActivity()) // problem! 
      .addConnectionCallbacks(this) // problem! 
      .addOnConnectionFailedListener(this) // problem! 
      .addApi(LocationServices.API) 
      .build(); 
} 
+0

U может использовать getActivity(), и вы пытаетесь построить это после возврата? – Blackkara

+0

@Blackkara Если я использую getActivity() во второй строке, он дает ошибку: «addConnectionCallbacks (com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks) в Builder не может применяться (android.support.v4 .app.FragmentActivity) « – Emile

+0

и сделать это перед возвратом – Blackkara

ответ

8

Здесь нужен контекст, и можно использовать getActivity()

new GoogleApiClient.Builder(getActivity()) // problem! 

Ниже два метода обратный вызова нужен, так что ваш фрагмент должен реализовать ConnectionCallbacks, OnConnectionFailedListener слушатель.

.addConnectionCallbacks(this) // problem! 
.addOnConnectionFailedListener(this) // problem! 

Объяснение

  • метод .addConnectionCallbacks нуждается ConnectionCallbacks
  • метод
  • .addOnConnectionFailedListener нуждается OnConnectionFailedListener

Вы уже реализовали их

public class MapFragment extends Fragment implements OnMapReadyCallback, 
GoogleApiClient.ConnectionCallbacks, 
GoogleApiClient.OnConnectionFailedListener, 
com.google.android.gms.location.LocationListener { 
    ... 
} 

Итак, здесь «0» относится к классу MapFragment. И когда вы передаете «это» в вышеуказанных методах, они используют свои обратные вызовы.

+0

Я думаю, что я реализовал эти два интерфейса? – Emile

+0

Это работает! Спасибо! Не могли бы вы объяснить, что означает «это» здесь? – Emile

+0

Ваш приветственный помощник – Blackkara

 Смежные вопросы

  • Нет связанных вопросов^_^