2016-09-27 3 views
1

내비게이션 서랍 조각에 google maps v2 조각을 사용합니다.안드로이드 구글 맵스 한 번만 표시

네비게이션에서 모든 것을 선택할 수 있습니다.

내가 다른 조각으로 전환하고지도를 다시

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.MapView; 
import com.google.android.gms.maps.MapsInitializer; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.CameraPosition; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 



public class HomeFragment extends Fragment { 

MapView mMapView; 
private GoogleMap googleMap; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

    mMapView = (MapView) rootView.findViewById(R.id.map); 
    mMapView.onCreate(savedInstanceState); 

    mMapView.onResume(); // needed to get the map to display immediately 

    try { 
     MapsInitializer.initialize(getActivity().getApplicationContext()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    mMapView.getMapAsync(new OnMapReadyCallback() { 
     @Override 
     public void onMapReady(GoogleMap mMap) { 
      googleMap = mMap; 


      googleMap.setMyLocationEnabled(true); 


      LatLng sydney = new LatLng(-34, 151); 
      googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description")); 

      // For zooming automatically to the location of the marker 
      CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build(); 
      googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 
     } 
    }); 

    return rootView; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mMapView.onResume(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mMapView.onPause(); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    mMapView.onDestroy(); 
} 

@Override 
public void onLowMemory() { 
    super.onLowMemory(); 
    mMapView.onLowMemory(); 
}} 

<FrameLayout 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" 
tools:context="de.sw2016.bebudget.fragment.HomeFragment"> 

<com.google.android.gms.maps.MapView 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.MapFragment"/> 

+0

다시 돌아올 때 조각을 다시 생성 하시겠습니까? – kikettas

답변

0

예 내가 선택한 항목 항목을 확인 내 fragment_layout을 표시하고 조각을 다시로드되지 않는다 .

private Fragment getHomeFragment() { 
    switch (navItemIndex) { 
     case 0: 
      // home 
      MapFragment mapFragment = new MapFragment(); 
      return mapFragment; 
     case 1: 
      // photos 
      PhotosFragment photosFragment = new PhotosFragment(); 
      return photosFragment; 
     case 2: 
      // movies fragment 
      MoviesFragment moviesFragment = new MoviesFragment(); 
      return moviesFragment; 
     case 3: 
      // notifications fragment 
      NotificationsFragment notificationsFragment = new NotificationsFragment(); 
      return notificationsFragment; 

     case 4: 
      // settings fragment 
      SettingsFragment settingsFragment = new SettingsFragment(); 
      return settingsFragment; 
     default: 
      return new MapFragment(); 
    } 
} 


public boolean onNavigationItemSelected(MenuItem menuItem) { 

      //Check to see which item was being clicked and perform appropriate action 
      switch (menuItem.getItemId()) { 
       //Replacing the main content with ContentFragment Which is our Inbox View; 
       case R.id.nav_map: 
        navItemIndex = 0; 
        CURRENT_TAG = TAG_MAP; 
        break; 
       case R.id.nav_photos: 
        navItemIndex = 1; 
        CURRENT_TAG = TAG_PHOTOS; 
        break; 
       case R.id.nav_movies: 
        navItemIndex = 2; 
        CURRENT_TAG = TAG_MOVIES; 
        break; 
       case R.id.nav_notifications: 
        navItemIndex = 3; 
        CURRENT_TAG = TAG_NOTIFICATIONS; 
        break; 
       case R.id.nav_settings: 
        navItemIndex = 4; 
        CURRENT_TAG = TAG_SETTINGS; 
        break; 
       case R.id.nav_about_us: 
        // launch new intent instead of loading fragment 
        startActivity(new Intent(MainActivity.this, AboutUsActivity.class)); 
        drawer.closeDrawers(); 
        return true; 
       case R.id.nav_privacy_policy: 
        // launch new intent instead of loading fragment 
        startActivity(new Intent(MainActivity.this, PrivacyPolicyActivity.class)); 
        drawer.closeDrawers(); 
        return true; 
       default: 
        navItemIndex = 0; 
      } 
관련 문제