所以我有一個片段類:不可兌換類型錯誤SupportMapFragment
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" />
我沒有在任何開發人員文檔中看到「SupportFragmentManager」,並且它沒有出現在代碼提示中? – makapaka
它在android支持庫中。它將代碼片段(以及其他一些事物)反向移植到2.x.或者,您可以使用MapFragment而不是SupportMapFragment,但這會在2.x上打破您的應用程序。基本上,要使用2.x,只使用支持類。要僅使用4.0+,您可以使用普通的。但不要混淆兩者。 –
你能在Google網站上找到支持參考嗎?我看不到它;這個答案有70分,是我試圖做到這一點:http://stackoverflow.com/questions/14565460/error-opening-supportmapfragment-for-second-time – makapaka