2

AlertDialog 내에 표시된 MapFragment를 가져오고 싶습니다.AlertDialog에서 작동하도록 MapFragment 가져 오기

, 또는이 둘의 엉터리 결혼, 입술 IllegalArgument 또는 NullPointer 예외 중 하나입니다. 때로는 확장 된 MapFragment에서 ID와 연관된보기를 찾을 수 없다는 것에 대해 우는 소리가 들립니다.

내가 지금까지있어 관련 코드 :. 당신이

public class DialogMapFragment extends DialogFragment { 

    private SupportMapFragment fragment; 

    public DialogMapFragment() { 
     fragment = new SupportMapFragment(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.mapdialog, container, false); 
     getDialog().setTitle(""); 
     FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); 
     transaction.add(R.id.mapView, fragment).commit(); 

     return view; 
    } 



    public SupportMapFragment getFragment() { 
     return fragment; 
    } 
} 



<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="0dp" > 

    <FrameLayout 
     android:id="@+id/mapView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </FrameLayout> 

</RelativeLayout>` 

하여 대화 상자에서지도 조각을 보여주고) (새 DialogMapFragment하여 대화 상자를 표시 할 수 있습니다

public class PropDetailActivity extends Activity 
{ 
    static final int PICK_REQUEST = 70003; 

    private static final int TABLE_PROP_TYPES = 13, 
     ADD_ID = Menu.FIRST + 1, 
     DELETE_ID = Menu.FIRST + 3;     

    Button btnLocation; 

    private LocationManager daLocationManager; 
    private String daProvider; 
    private double daCurrentLat, daCurrentLong; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.prop_detail); 

     btnLocation = (Button) findViewById(R.id.btnLocation); 

     btnLocation.setOnClickListener(new OnClickListener() 
     {   
      @Override 
      public void onClick(View v) 
      { 
       openGps(); 
      } 
     }); 

     doMapGubbinz(); 
    } 

    private void openGps() 
    { 
     LayoutInflater inflater = LayoutInflater.from(this); 

     LatLng here = new LatLng(daCurrentLat, daCurrentLong); 

     MapFragment fragment = PreparedMapFragment.newInstance(here); 

     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

     transaction.add(R.id.mapView, fragment) 
      .commit(); 

     //daMap = fragment.getMap(); 

     View gps = inflater.inflate(R.layout.location_gps, null); 

     new AlertDialog.Builder(this) 
      .setTitle("Property location") 
      .setView(gps) 
      .show(); 

//  Marker currentLoc = daMap.addMarker(new MarkerOptions().position(here).title("Ubicación actual")); 
//  
//  daMap.moveCamera(CameraUpdateFactory.newLatLngZoom(here, 15)); 
//  
//  daMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 
    } 

    public void doMapGubbinz() 
    { 
     daLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     Criteria criteria = new Criteria(); 

     daProvider = daLocationManager.getBestProvider(criteria, false); 

     daLocationManager.requestLocationUpdates(daProvider, 400, 1, this); 

     Location location = daLocationManager.getLastKnownLocation(daProvider);  

     if (location != null) 
     { 
      System.out.println("Provider " + daProvider + " has been selected."); 
      onLocationChanged(location); 
     } 
     daCurrentLat = location.getLatitude(); 
     daCurrentLong = location.getLongitude(); 
    } 

    static public class PreparedMapFragment extends MapFragment 
    { 
     static MapFragment frag; 

     public PreparedMapFragment() 
     { 
      super(); 
     } 

     public static MapFragment newInstance(LatLng pos) 
     { 
      frag = new MapFragment(); 

      UiSettings settings = frag.getMap().getUiSettings(); 

      settings.setAllGesturesEnabled(false); 
      settings.setMyLocationButtonEnabled(false); 

      frag.getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(pos, 16)); 

      frag.getMap().addMarker(new MarkerOptions().position(pos).title("Ubicación actual")); 

      frag.getMap().animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 

      return frag; 
     } 

//  @Override 
//  public View onCreateView(LayoutInflater arg0, ViewGroup arg1, Bundle arg2) 
//  { 
//   View v = super.onCreateView(arg0, arg1, arg2); 
//   initMap(); 
//   return v; 
//  } 
// 
//  private void initMap() 
//  { 
//   UiSettings settings = getMap().getUiSettings(); 
//   
//   settings.setAllGesturesEnabled(false); 
//   settings.setMyLocationButtonEnabled(false); 
//   
//   getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(daCurrentPos, 16)); 
//   
//   getMap().addMarker(new MarkerOptions().position(daCurrentPos).title("Ubicación actual")); 
// 
//   getMap().animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 
//  } 
    } 
} 

답변

0

쇼 (getFragmentManager(), "태그"); 필요한 모든 단추로 대화 조각을 사용자 지정할 수 있습니다