2016-03-24 13 views
0

Ich versuche, eine grundlegende Aktivität mit einem Google-Map-Fragment zu erstellen. Im Moment habe ich dies:Arbeiten mit Kartenfragment-Aktivität

public class MainScreen extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_screen); 

     // add the map fragment to the activity 
     if (findViewById(R.id.fragment_container) != null) { 
      if (savedInstanceState != null) { return; } 
      getSupportFragmentManager().beginTransaction() 
      .add(R.id.fragment_container, new FragmentGoogle()).commit(); 
     } 
    } 
} 

public class FragmentGoogle extends android.support.v4.app.Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.map_google, container, false); 
    } 
} 

Welche dies produziert:

enter image description here

Meine Frage ist: Wie kann ich mit dem Fragment selbst interagieren? Nehmen wir an, ich möchte Sidney vergrößern. Soll ich den Code in die MainScreen.class oder in die Fragment.class schreiben? Welche Methoden sollte ich verwenden? Ich arbeite zum ersten Mal mit Fragmenten.

+0

sollten Sie auch Ihre .xml enthalten. Sie können auch von offiziellen Google Maps für Android-Tutorial und viele kostenlose Tutorials wie Android Bienenstock, Vogella oder Codepath starten. Dies sollte kein schwieriges Problem sein. – aldok

+1

Sie müssen keine Klasse für das Fragment erstellen, Sie können dies direkt aus der Hauptaktivitätsklasse tun. Ich schlage vor, dass Sie dieses Tutorial http://www.tutorialspoint.com/android/android_google_maps.htm ausprobieren –

Antwort

1

Sie müssen kein eigenes FragmentGoogle erstellen. Sie können com.google.android.gms.maps.SupportMapFragment verwenden und aus Ihrem Aktivitätscode steuern.

im Layout:

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/map" 
    tools:context=".MapsActivity" 
    android:name="com.google.android.gms.maps.SupportMapFragment" /> 

und dann im Aktivitätscode:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Add a marker in Sydney, Australia, and move the camera. 
     LatLng sydney = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
    } 
} 

Der Code von this tutorial genommen wird, die genug ist, und die meisten der Funktionen des Google verwenden zu starten Maps Android API, folgen Sie einfach den Schritten :)