gpt4 book ai didi

fragment 中的 Android 谷歌地图

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:56:28 31 4
gpt4 key购买 nike

我正在开发一个顶部有菜单的应用程序,该菜单中有一些按钮。我正在尝试将谷歌地图添加到其中一个按钮,但我不是很成功。我在关注 this tutorial但是我没有将 google maps 直接实现到 MainActivity 中,而是将它们添加到按下按钮时启动的 fragment 中。一切正常。当我按下按钮时, map 会加载并且它们会正常工作。当我按下主页按钮返回到 MainActivity 时,它工作得很好,但是当我想再次加载 map 时,它给我 调试错误:类文件编辑器:找不到源

这是 GoogleMaps fragment 的代码:

public class GoogleMaps extends Fragment{

private GoogleMap googleMap;
double latitude = 46.514249;
double longitude = 15.080183;

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View myFragmentView = inflater.inflate(R.layout.maps_layout, container, false);

try {
// Loading map
initilizeMap();

} catch (Exception e) {
Log.e("ERROR", "ERROR IN CODE: " + e.toString());
e.printStackTrace();
}

return myFragmentView;
}

private void initilizeMap() {
if (googleMap == null) {
googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)));
CameraPosition cameraPosition = new CameraPosition.Builder().target(
new LatLng(latitude, longitude)).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getActivity(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
}

我们将不胜感激。

编辑:如果我不够具体。当我加载 fragment 一次(第一次)时它起作用,但当我尝试再次加载它时(第二次)它不起作用。

编辑 v2:我实际上自己找到了解决方案。我所要做的就是添加 OnDestroyView 方法:

public void onDestroyView() 
{
super.onDestroyView();
Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}

还是谢谢你

最佳答案

public class MapCurrentLoactionFragment extends Fragment {
public static MapView mapView;

public static GoogleMap map;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View v = inflater.inflate(R.layout.fragment_currentlocation_map,
container, false);
try
{

// Gets the MapView from the XML layout and creates it
mapView = (MapView) v.findViewById(R.id.mapview);

mapView.onCreate(savedInstanceState);
mapView.onResume();
// Gets to GoogleMap from the MapView and does initialization stuff
map = mapView.getMap();
// Changing map type
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
// googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
// googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
// googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
// googleMap.setMapType(GoogleMap.MAP_TYPE_NONE);

// Showing / hiding your current location
map.setMyLocationEnabled(false);

// Enable / Disable zooming controls
map.getUiSettings().setZoomControlsEnabled(true);

// Enable / Disable my location button
map.getUiSettings().setMyLocationButtonEnabled(true);

// Enable / Disable Compass icon
map.getUiSettings().setCompassEnabled(true);

// Enable / Disable Rotate gesture
map.getUiSettings().setRotateGesturesEnabled(true);

// Enable / Disable zooming functionality
map.getUiSettings().setZoomGesturesEnabled(true);

MapsInitializer.initialize(this.getActivity());
}
catch(Exception e)
{
System.out.println(e);
}
return v;
}

XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<com.google.android.gms.maps.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

</LinearLayout>

关于 fragment 中的 Android 谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583522/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com