对于 Fragment 类型,方法 getSupportFragmentManager() 未定义
Posted
技术标签:
【中文标题】对于 Fragment 类型,方法 getSupportFragmentManager() 未定义【英文标题】:The method getSupportFragmentManager() is undefined for the type Fragment 【发布时间】:2015-08-21 18:49:34 【问题描述】:我在标题中描述了一个问题,目的是在片段中显示谷歌的地图。
这是fragment_inicio.xml
<fragment
android:id="@+id/map"
android:layout_
android:layout_
class="com.google.android.gms.maps.SupportMapFragment" />
这是 InicioFragment.java
public class InicioFragment extends Fragment implements OnMapClickListener
private final LatLng UPV = new LatLng(39.481106, -0.340987);
private GoogleMap mapa;
// @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.fragment_inicio, container,
false);
return rootView;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_inicio);
mapa = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
mapa.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mapa.moveCamera(CameraUpdateFactory.newLatLngZoom(UPV, 15));
mapa.setMyLocationEnabled(true);
mapa.getUiSettings().setZoomControlsEnabled(false);
mapa.getUiSettings().setCompassEnabled(true);
mapa.addMarker(new MarkerOptions()
.position(UPV)
.title("UPV")
.snippet("Universidad Politécnica de Valencia")
.icon(BitmapDescriptorFactory
.fromResource(android.R.drawable.ic_menu_compass))
.anchor(0.5f, 0.5f));
mapa.setOnMapClickListener(this);
private void setContentView(int fragmentInicio)
// TODO Auto-generated method stub
public void moveCamera(View view)
mapa.moveCamera(CameraUpdateFactory.newLatLng(UPV));
public void animateCamera(View view)
if (mapa.getMyLocation() != null)
mapa.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(
mapa.getMyLocation().getLatitude(), mapa.getMyLocation()
.getLongitude()), 15));
public void addMarker(View view)
mapa.addMarker(new MarkerOptions().position(new LatLng(mapa
.getCameraPosition().target.latitude,
mapa.getCameraPosition().target.longitude)));
@Override
public void onMapClick(LatLng puntoPulsado)
mapa.addMarker(new MarkerOptions().position(puntoPulsado).icon(
BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW)));
感谢您对此错误的任何帮助。
谢谢
编辑
试试你提到的我,但我仍然约会错误。
错误现在告诉我:
无法从 Fragment 转换为 SupportMapFragment
项目给了我,所以我对 appcompat_v7 和 v4 了解不多,所以我理解你的评论 v4 更好?。
这个项目被带到一个互联网的例子,只是添加了地图,现在他们说他们要离开这个位置。
这是最好的方法还是寻找另一种方法来添加带有定位的谷歌地图。
问一个带有 GoogleMap 的 Fragment 示例是不是太过分了,而不是其他请求。
【问题讨论】:
你是通过import android.support.v4.app.Fragment;
导入Fragment吗?
【参考方案1】:
不要使用getSupportFragmentManager()
,而是使用getFragmentManager()
。
看起来您使用的是 android.app.Activity 和相关的 Fragments,而不是 v4 支持库提供的支持 Activity 和 Fragments。
如果您需要使用支持片段,请参阅导入支持库片段和活动。如果不更换片段管理器
如需更多帮助,请参阅Fragment vs Support Fragments
【讨论】:
以上是关于对于 Fragment 类型,方法 getSupportFragmentManager() 未定义的主要内容,如果未能解决你的问题,请参考以下文章
FragmentTransaction 类型中的方法 add(int, Fragment, String) 不适用于参数 (int, Fragment, String)
FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, WeatherFragment)
Android学习笔记(十四)——在执行时加入碎片(附源代码)