2014-12-16 2 views
-6

값을 MainActivity에서 Fragment로 설정했지만 값이 Fragment에서 0이됩니다. moveToLocation()에 로그인했을 때 위도 값은 0 이었지만 setLocation에 로그인하면 위도 값이 올바른 값으로 전달되었습니다. 이유가 무엇인가요?위도 값을 0으로 설정했습니다.

MainActivity

MapFragment mapFragment = new MapFragment(); 
mapFragment.setLocation(111, 222, "abcAddress"); 

조각

public class MapFragment extends Fragment { 
    private GoogleMap mMap; 
    private double mLatitude; 
    private double mLongitude; 
    private String mAddress; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     try { 
      MapsInitializer.initialize(getActivity()); 
     } catch (GooglePlayServicesNotAvailableException e) { 
      Log.d("", "You must update Google Maps."); 
      getActivity().finish(); 
     } 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     mMap = ((SupportMapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     moveToLocation(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, 
          Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.map_page, null); 
    } 

    public void setLocation(double latitude, double longitude, String address) { 
     mLatitude = latitude; 
     mLongitude = longitude; 
     mAddress = address; 
    } 

    protected void moveToLocation() { 
     CameraPosition location = new CameraPosition.Builder() 
       .target(new LatLng(mLatitude, mLongitude)).zoom(15.5f) 
       .bearing(0).tilt(25).build(); 
     mMap.animateCamera(CameraUpdateFactory.newCameraPosition(location)); 
     MarkerOptions marker = new MarkerOptions().position(new LatLng(mLatitude, mLongitude)).title(mAddress); 
     marker.snippet("Snippet"); 
     mMap.addMarker(marker); 
    } 
} 
+0

표시 ツ바꾸기를 사용하는 곳에서 더 많은 코드를 사용하여 단편을 작성하십시오. –

+0

위치를 설정하려고 할 때'MapFragment'의 새 인스턴스를 만드시겠습니까? –

+0

활동에서 바꾸기와 커밋을 사용하지 않습니다. 활동의 다른 코드와 단편과의 관계가 없습니다. – tarofess

답변

0

당신은 MapFragment의 새로운 인스턴스를 생성하지 않아야합니다.

는 값을 전달 트랜잭션에서 그들을 추가하는 동안 인수를 설정하려면 :

Bundle bundle = new Bundle(); 
bundle.putDouble("lat", latitude); 
bundle.putDouble("long", longitude); 
bundle.putString("address", address); 
myFragment.setArguments(bundle); 

과 같은 onCreate()의 값을 가져 오기 :

@Override 
public View onCreate(Bundle savedInstanceState) { 

    Bundle mBundle = getArguments(); 

    if (mBundle != null) { 
     String address = mBundle.getString("address"); 
     // Call method 
     setLocation(mBundle.getDouble("lat"), mBundle.getDouble("long"), mBundle.getString("address")); 
    } else { 
     Toast.makeText(getActivity(), "Location Not Found", Toast.LENGTH_SHORT).show(); 
    } 

} 

는 희망이 도움이

+0

고마워요! 하지만 모르겠 는데요 ... myFragment는 무엇인가요? – tarofess

+0

MAPFragment의 인스턴스를 처음 만들 때 MAP –

+0

이 제대로 작동합니다! 대단히 감사합니다! – tarofess

관련 문제