タブ付きの ActionBarとfragmentを組み合わせるのに苦労しています。
私は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();
}