我有主要活动和一个片段。在那个片段中,我使用了谷歌地图。我想知道,如何使用java将地图片段的实例传递给主要活动。因为我想将该地图操纵为主要活动。
我在主要活动中有这个课程
public static class HomeFragment extends Fragment {
private static View view;
public HomeFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(view != null)
{
ViewGroup parent = (ViewGroup) view.getParent();
if(parent != null)
{
parent.removeView(view);
}
}
try
{
view = inflater.inflate(R.layout.fragment_home, container, false);
}
catch(InflateException e){
// map is already there, just return view as it is
}
return view;
}
}
fragment_home.xml
<RelativeLayout 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:padding="0dp"
tools:context="com.gaurav.googlemap.HomeMap" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" >
</fragment>
</RelativeLayout>
我想在主要活动
中实例化此行下方的地图view = inflater.inflate(R.layout.fragment_home, container, false);
感谢。
答案 0 :(得分:0)
您可以添加任何方法
public void getFragment(Fragment fragment){
}
在MainActivty和片段中
您可以使用以下代码调用此方法...
((MainActivity)getActivity()).getFragment(this);
我希望它会对你有帮助.....
答案 1 :(得分:0)
yourmap.xml
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="2dp"
>
<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
youractivity.class
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.i(TAG, "oncreate");
View rootView = inflater.inflate(R.layout.yourmap, container, false);
// Gets the MapView from the XML layout and creates it
mapView = (MapView) rootView.findViewById(R.id.mapview);
mapView.onCreate(savedInstanceState);
setCurrentLocationMarker();
return rootView;
}
public void setCurrentLocationMarker(){
try {
// Gets to GoogleMap from the MapView and does initialization stuff
map = mapView.getMap();
map.getUiSettings().setMyLocationButtonEnabled(false);
map.setMyLocationEnabled(true);
// Needs to call MapsInitializer before doing any CameraUpdateFactory calls
try {
MapsInitializer.initialize(getActivity());
} catch (Exception e) {
Log.e(TAG , "Exception: "+e.getMessage());
e.printStackTrace();
}
gps = new GPSTracker(getActivity());
if(gps.canGetLocation()) {
myLatitude = gps.getLatitude();
myLongitude = gps.getLongitude();
if(myLatitude==0 && myLongitude==0){
LocationManager lm = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
Location location = getLastKnownLocation(lm);
Log.i(TAG, "location : "+location);
if(location!=null){
myLatitude = location.getLatitude();
myLongitude = location.getLongitude();
}
}
} else {
// Can't get location.
// GPS or network is not enabled.
// Ask user to enable GPS/network in settings.
gps.showSettingsAlert();
Log.i(TAG, "gps.canGetLocation() : "+gps.canGetLocation());
return;
}
Log.i(TAG, "myLatitude :"+myLatitude+", myLongitude: "+myLongitude);
// Updates the location and zoom of the MapView
if(myLatitude>0 && myLongitude>0){
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(myLatitude, myLongitude), 10);
map.animateCamera(cameraUpdate);
MarkerInfo markerinfo = new MarkerInfo("", "Current Location", myLatitude, myLongitude, true);
addMarker(markerinfo);
}
map.setOnMarkerClickListener(onClickListener);
map.setOnInfoWindowClickListener(onInfoWindowClickListener);
marker.showInfoWindow();
} catch (Exception e) {
Log.e(TAG, "Exception : "+e.getMessage());
}
}
答案 2 :(得分:0)
mapView = (MapFragment) ((Activity)mContext).getFragmentManager().findFragmentById(R.id.map_view);
这对我有用