2

タブ付きの ActionBarfragmentを組み合わせるのに苦労しています。

私はActionBarSherlockを使用して 3 つの独立したタブを表示していますが、私の問題は最初のタブのみに関連しています。リストと詳細ビューの組み合わせでアイテム (「クーポン」と呼ばれる) を表示することになっています。他の 2 つのタブには異なるコンテンツが表示され、ここでは役割を果たしません。

私がやっていることは次のとおりです。

  • メイン アクティビティは、3 つのタブに対して 3 つのフラグメントを作成します。
  • タブ A (リスト フラグメント) は、そのリストにデータを入力してレンダリングします
  • リストをクリックすると、クリックされたアイテムのIDを受け取り、リストフラグメントをタブの詳細フラグメントと交換するコールバックをメインアクティビティに書きました(少なくともそうすることになっています)
  • そのコールバックで、表示される詳細フラグメントを作成し、リスト フラグメントをそれで置き換えようとします。

残念ながら、私はそれを超えません:

java.lang.IllegalArgumentException: フラグメント CouponDetailFragment の ID 0x7f040027 のビューが見つかりません{44f4e310 #1 id=0x7f040027}

質問の最後に関連するスニペットを添付しました。どんな助けでも大歓迎です。

関連するスニペットは次のとおりです。

public class MyCouponActivity extends SherlockFragmentActivity implements CouponListFragment.Callbacks

リストフラグメント:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:name="foo.bar.CouponListFragment"
    android:id="@+id/coupon_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

フラグメント交換のトランザクション:

@Override
public void onItemSelected(final String id) {
    final Bundle arguments = new Bundle();
    arguments.putString(CouponDetailFragment.ARG_ITEM_ID, id);
    final CouponDetailFragment fragment = new CouponDetailFragment();
    fragment.setArguments(arguments);
    getSupportFragmentManager().beginTransaction().replace(R.id.coupon_list, fragment).commit();
}
4

1 に答える 1

3

XML でフラグメントを定義すると、フラグメントは固定され、FragmentTransaction で別のフラグメントに置き換えることはできません。

あなたの最善の策は、<fragment />をある種のに置き換えることですViewGroup。FragmentTransaction を使用して、Activity に CouponListFragment を追加する必要があることを忘れないonCreate(..)でください。

于 2012-08-02T17:02:46.293 に答える