0

DrawerLayout アイテムの 1 つで MapFragment を使用しようとしています。

私の引き出しレイアウト:

private void selectItem(int position) {
        switch (position) {
            (...)
            case 3:
                fragment = new MyMapFragment();
                break;
            (...)
            //THIS CODE WORKS WITH ANY OTHER FRAGMENT I CREATED!!!!!!
        }
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
            .replace(R.id.content_frame, fragment)
            .commit();

このコードは、MyMapFragment を除いて、すべてのフラグメントで正常に動作し、クラッシュすることはありません。コードは私の他のフラグメントと非常に似ていますが、これ(これのみ)はデバイスの回転時にクラッシュします。

唯一の違いは、ネストされた Fragment を使用していることです。

public class MyMapFragment extends Fragment {
 public void onActivityCreated(Bundle savedInstanceState) {

        super.onActivityCreated(savedInstanceState);
        mMapFragment = new MapFragment();

        GoogleMap map = mMapFragment.getMap();

        FragmentTransaction fragmentTransaction =
            getChildFragmentManager().beginTransaction();
        fragmentTransaction.add(R.id.container, mMapFragment);
        fragmentTransaction.commit();
}

何が悪いのかわかりません...

ログキャット:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*/com.*.MainActivity}: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.*.MyMapFragment$1: make sure class name exists, is public, and has an empty constructor that is public
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194)
4

1 に答える 1

1

FragmentActivityの代わりに拡張しますMapFragement

今すぐ使用SupportMapFragment

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();

map_layout.xml

<fragment
            android:id="@+id/map"

            android:name="com.google.android.gms.maps.SupportMapFragment" 

            android:layout_width="match_parent"
            android:layout_height="match_parent" />
于 2013-06-19T13:23:19.120 に答える