所以我有一个片段类:
public class MyMapFragmentActivity extends Fragment implements LocationListener,
GoogleMap.OnMapClickListener, GoogleMap.OnMapLongClickListener {
在其中我定义了一个SupportMapFragment:
private SupportMapFragment fragment;
我正在尝试使用findFragmentById:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
fragment = (SupportMapFragment) fm.findFragmentById(R.id.map);
if (fragment == null) {
fragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.content_frame, fragment).commit();
}
}
该行
fragment = (SupportMapFragment) fm.findFragmentById(R.id.map);
尽管'片段'作为一个SupportMapFragment,这给出了不可逆转的类型错误: 无法将android.app.fragment强制转换为com.google.android.gms.maps.SupportMapFragment!
我正在使用片段布局:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment" />
答案 0 :(得分:4)
如果您使用兼容性库,请使用getSupportFragmentManager().findFragmentById(R.id.fragment);
,否则从android.app.Fragment
而不是android.support.v4.app.fragment
延伸。
答案 1 :(得分:2)
您正在混合支持片段和非支持片段管理器。请改用SupportFragmentManager。