1

アプリで Sliding Menu ライブラリを使用しています。スライド メニューはフラグメントです。

青い部分は開いた時のスライドメニュー。

赤い部分は静的で、変化しません。ところで、それが主なアクティビティです。黄色の部分は、ユーザーがスライド メニューの項目をクリックしたときに変化するフラグメントです。

スライド メニューとフラグメントの問題

私がそれを実装するときの問題は次のとおりです。

スライド メニュー フラグメントでは、OnItemClick イベントをリッスンし、クリックされたアイテムの位置に応じて新しいフラグメントを作成します。その後、黄色のフレーム ID をフラグメントに置き換えます。

        @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        Fragment frag = null;
        switch (arg2) {
        case 1:
            frag = new ExpFragment();
            break;

        case 2:
            frag = new FormFragment();
            break;

        case 3:
            frag = new CompFragment();
            break;

        default:
            frag = new ContactFragment();
            break;
        }
        transaction.replace(R.id.fragment, frag);
        transaction.commit();
    }

よさそうですね?うーん、ダメ。これが私が得たlogcat例外です。

06-13 09:28:29.739: E/AndroidRuntime(15422): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

だから、誰かが手がかりを持っているか、何を見るべきか教えてくれたら、それは素晴らしいことです!

TL;DR : 2 つのフラグメント (ブルーとイエロー) があり、ブルーはイエローを変更する必要があります。例外があります。

ありがとう、

編集: レイアウト ファイル: activity_main: https://gist.github.com/dommerq/5771887 1 つのフラグメント アイテムの例: https://gist.github.com/dommerq/5771892

4

1 に答える 1