0

さて、基本的なレベルでは、一連のリストを使用して一連のリストを単純に作成しようとしています。マスター/フローの開始テンプレートは、最終的なコンテンツに到達する前にリストの「層」をもう 1 つ作成したいことを除いて、これをうまく行います。したがって、これを行うためのより良い方法を知っている場合は、遠慮なく提案してください。

そうは言っても、これは私の実装です。master/flow テンプレートを使用して開始し、fragment_detail xml (私の場合は fragment_game_detail.xml と呼ばれる) を TextView から RelativeLayout に変更しようとしましたが、この変更により IAE がスローされているようです。

参考までに、私が理解しているコールスタックを次に示します。

public void onItemSelected(String id) {

    if (mTwoPane) {

        // In two-pane mode, show the detail view in this activity by
        // adding or replacing the detail fragment using a
        // fragment transaction.
        Bundle arguments = new Bundle();
        arguments.putString(RiskDetailFragment.ARG_ITEM_ID, id);
        RiskDetailFragment fragment = new RiskDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                                   .replace(R.id.game_detail_container,
                                            fragment)
                                   .commit();

    } else {

        // In single-pane mode, simply start the detail activity
        // for the selected item ID.
        Intent detailIntent = new Intent(this, RiskDetailActivity.class);
        detailIntent.putExtra(RiskDetailFragment.ARG_ITEM_ID, id);
        startActivity(detailIntent);

    }

}

どの呼び出し

public void onItemSelected(String id) {

    if (mTwoPane) {

        // In two-pane mode, show the detail view in this activity by
        // adding or replacing the detail fragment using a
        // fragment transaction.
        Bundle arguments = new Bundle();
        arguments.putString(RiskDetailFragment.ARG_ITEM_ID, id);
        RiskDetailFragment fragment = new RiskDetailFragment();
        fragment.setArguments(arguments);
        getSupportFragmentManager().beginTransaction()
                                   .replace(R.id.game_detail_container,
                                            fragment)
                                   .commit();

    } else {

        // In single-pane mode, simply start the detail activity
        // for the selected item ID.
        Intent detailIntent = new Intent(this, RiskDetailActivity.class);
        detailIntent.putExtra(RiskDetailFragment.ARG_ITEM_ID, id);
        startActivity(detailIntent);

    }

}

Fragment_game_detail が変更されました

<RelativeLayout android:id="@+id/game_detail"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    style="?android:attr/textAppearanceLarge"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RiskDetailFragment" >

</RelativeLayout>

それぞれのアイテムをクリックすると、id/game_detail_container の IAE がスローされるのはなぜですか? これがスタックオーバーフローでスローされるという他の12以上の問題を経験しましたが、それらのどれも私が見つけたものとは関係ありません。

その ID を含む activity_game_detail.xml を次に示しますが、適切なクラスを指しているため変更していません。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/game_detail_container"

    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".RiskDetailActivity"
    tools:ignore="MergeRootFrame" />

ListFragment では、これも問題の一部である可能性があります。

public void onListItemClick(ListView listView,
                            View view,
                            int position,
                            long id) {

    super.onListItemClick(listView, view, position, id);

    switch(position){
        case 0:
            RiskDetailFragment fragment = new RiskDetailFragment();
            getChildFragmentManager().beginTransaction()
                                     .replace(R.id.game_detail_container,
                                              fragment)
                                     .commit();
            break;
        case 1:
            break;
        default:
            break;

    }

}
4

1 に答える 1