2016-05-22 6 views
-2

Ich habe versucht, eine Google Map in ein Fragment zu laden. Ich weiß nicht, was die drei Zeilen sein sollen ... (die drei Zeilen kommentiert mit "Problem!").Mit GoogleApiClient in Fragment Android

Die meisten Beispiele verwenden "this" in der Klammer. Ich verstehe, dass dies ein Fragment ist, keine Aktivität, also habe ich stattdessen "getActivity()" verwendet. Aber wenn ich alle drei Zeilen in getActivity() geändert habe, hat es auch nicht funktioniert. Bitte helfen Sie! Danke im Voraus!

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 kann getActivity() verwenden, und Sie versuchen, dies nach der Rückkehr zu bauen? – Blackkara

+0

@Blackkara Wenn ich getActivity() in die zweite Zeile verwende, gibt es einen Fehler sagt "addConnectionCallbacks (com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks) in Builder kann nicht angewendet werden (android.support.v4 .app.FragmentActivity) " – Emile

+0

und tun Sie es vor der Rückkehr – Blackkara

Antwort

8

Hier Kontext benötigen, u getActivity()

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

Im Folgenden zwei Methoden Rückruf benötigen, verwenden so muss Ihr Fragment Connection implementieren, OnConnectionFailedListener Zuhörer.

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

Erklärung

  • .addConnectionCallbacks Methode benötigt Connection
  • .addOnConnectionFailedListener Methode benötigt OnConnectionFailedListener

Sie sie bereits umgesetzt

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

Also, hier 'bezieht sich auf Ihre MapFragment-Klasse. Und wenn Sie 'this' in obigen Methoden übergeben, verwenden sie ihre Rückrufe.

+0

Ich denke, ich habe diese beiden Schnittstellen implementiert? – Emile

+0

Das funktioniert! Vielen Dank! Kannst du erklären, wofür das "hier" steht? – Emile

+0

Ihr willkommener Kumpel – Blackkara