Ich habe ein Problem mit dem FragmentManager. Ich versuche eine Google Map in einem Fragment zu bekommen. Das ist mein Fragment. Ich möchte eine Karte für eine bestimmte Position machen com.google.android.gms mit: Play-Dienste: 9.2.1Fragmentmanager 2. Variable
>
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.spoturdeal.spoturdeal.R;
public class MapShopsFragment extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapdeals);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Somewhere, and move the camera.
LatLng somewhere = new LatLng(51, 6);
mMap.addMarker(new MarkerOptions().position(somewhere).title("Marker in somewhere"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(somewhere));
}
}
Die MainActivity hat folgende Einfuhren
>
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import android.Manifest;
import com.spoturdeal.spoturdeal.R;
import com.spoturdeal.spoturdeal.fragments.MapShopsFragment;
ich überprüft haben, dass ich verwende android.support.v4.app.FragmentActivity Der Code, der das Problem hat, ist dieser Teil
>
private void displayInitialFragment() {
MapShopsFragment mapShopsFragment = new MapShopsFragment();
FragmentManager fragmentmanager = getSupportFragmentManager();
fragmentmanager.beginTransaction()
.setCustomAnimations(R.anim.anim_slide_in_from_left, R.anim.anim_slide_out_from_left)
.replace(R.id.relativelayout_for_fragment,
mapShopsFragment, /** here is the Problem
mapShopsfragment.getTag()
).commit();
}
Die Fehlermeldung kann ich, wenn baut Fehler: (77, 25) Fehler: inkompatible Typen: MapShopsFragment nicht konvertiert werden können
Ich habe mehrere weitere Fragmente zu Fragment, das ich arbeite mit ihnen haben Probleme. Sie werden als ListFragments erweitert.
Ich möchte die Karte nicht in einer anderen Aktivität erstellen, da ich mein Material-Design-Menü darauf einstellen muss.
In der Statuszeile des Android Studio ich folgende Meldung
'replace(int, android.support.v4.app.Fragment)' in 'android.support.v4.app.FragmentTransaction' cannot be applied to '(int, com.spoturdeal.spoturdeal.fragments.MapShopsFragment)' but do not understand what is meant by it.
konnte ich das Fragment erhalten die Arbeit mit Hilfe von @ Ben bekommen die Karte arbeitet mit Play-Dienste erhalten: 9.2.1 war ein bisschen schwieriger. Unten ist die Lösung, die perfekt funktioniert hat.
>
public class MapShopsFragment extends Fragment implements OnMapReadyCallback {
private MapView mapView;
private GoogleMap googleMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.mapdeals, container, false);
}
public void onViewCreated(View v, Bundle savedInstanceState) {
mapView = (MapView) v.findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
mapView.onResume();
mapView.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
......
}
}
Mine MainActivity möchten nur den Import> com.spoturdeal.spoturdeal.fragments.MapShopsFragment; wenn ich hinzufügen, android.support.v4.app.Fragment; Es wird in grau sein – Charley57
Ja, sorry, ich bin verwirrt. Siehe aktualisierte Antwort. – Ben
Hallo Ben, danke für die Hilfe bisher. I Fragment scheint zu funktionieren. Aber jetzt bin ich nicht in der Lage, die Mapview richtig zu bekommen. Ich habe diesen Fehler> verursacht durch: java.lang.ClassCastException: android.widget.FrameLayout kann nicht in com.google.android.gms.maps.MapView umgewandelt werden – Charley57