2013-02-11 23 views
5

Tôi muốn có thể chuyển đổi giữa phân đoạn danh sách và đoạn bản đồ của người dùng bằng cách nhấn vào nút thanh tác vụ. Hiện tại tôi có thể trao đổi giữa chúng chỉ tốt nhưng tôi đang chạy vào một con trỏ null khi cố gắng để có được đối tượng GoogleMap thực tế từ đoạn. Khi tôi thử và di chuyển máy ảnh, nó không di chuyển do đối tượng GoogleMap bị thiếu và bỏ qua mã đó. Tôi không chắc liệu điều này có phải là do thực tế rằng tôi chưa bao giờ thực sự tạo ra Fragment từ xml nhưng thay vì chỉ sử dụng mã? Mã của tôi như sau:Hoán đổi giữa phân đoạn bản đồ Android v2 và liệt kê

public class MapFragment extends SherlockMapFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View root = super.onCreateView(inflater, container, savedInstanceState); 
     return root; 
    } 

} 

    @Override 
    public void swapFragments() { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     if (listFragment.isVisible()) { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 
      transaction.replace(R.id.root, mapFragment); 
     } else { 
      sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
      transaction.replace(R.id.root, listFragment); 
     } 
     transaction.commit(); 
    } 

    @Override 
    public void setupMapFragment() { 
     mapFragment = new MapFragment(); 
     mMap = mapFragment.getMap(); 
     if (mMap != null) { 
      mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        new LatLng(BuzzbabaApplication.latitude, 
          BuzzbabaApplication.longitude), 14)); 
     } 
    } 

Trả lời

3

Tôi cũng gặp sự cố này. Vấn đề được gây ra, như bạn đã đề cập, bởi vì bạn đang tải MapView động. Điều này có nghĩa là MapView đã tải xong trước khi tải đối tượng GoogleMap.

Một googlemap chỉ có thể được mua bằng GetMap() khi nằm bên dưới hệ thống bản đồ được nạp và quan điểm cơ bản trong đoạn tồn tại

(http://developer.android.com/reference/com/google/android/gms/maps/SupportMapFragment.html)

Giải pháp của tôi là tạo ra một phân đoạn bản đồ trong XML. Điều này có nghĩa là khi Chế độ xem đã tải xong, đối tượng GoogleMap cũng đã được tải và có thể được tham chiếu.

+0

Hmm ... vì vậy bố cục chính của tôi chỉ có FrameLayout mà tôi sử dụng để đặt các đoạn danh sách khác nhau vào, tôi muốn tránh đặt mảnh bản đồ vào đó vì tôi sẽ ẩn nó ngay lập tức, cho đến khi chúng nhấp một cái gì đó, nhưng đây là lựa chọn duy nhất? – egfconnor

+1

Nevermind, tôi đã thêm một cuộc gọi lại vào MapFragment trong onActivityCreated báo hiệu rằng GoogleMap không rỗng và đã sẵn sàng. Điều đó có vẻ như một nơi an toàn để làm điều đó. – egfconnor

+0

Có thêm gọi lại cũng là một cách hay để thực hiện. Giải pháp tốt. –

Các vấn đề liên quan