FrameLayout
ページ化された「ウィザード」ビューでアダプターにビューを提供するために拡張するクラスがあります。通常、フラグメントを a に追加するにはFrameLayout
、単に使用します
getSupportFragmentManager().beginTransaction().replace()
私のフラグメントをレイアウトに追加します。ただし、ここで行うようにフラグメントを追加しようとすると:
public class ReviewPreviousInspectionStep extends FrameLayout implements IWizardStep {
private IWizardStepStatusChangedListener listener;
private FragmentActivity activity;
public ReviewPreviousInspectionStep(FragmentActivity activity) {
super(activity);
this.activity = activity;
LayoutInflater.from(activity).inflate(R.layout.review_previous_inspection, this, true);
InspectionHistoryFragment inspectionHistoryFragment = new InspectionHistoryFragment();
inspectionHistoryFragment.setRetainInstance(true);
activity.getSupportFragmentManager().beginTransaction()
.replace(R.id.historyFragmentContainer, inspectionHistoryFragment, "historyFragment")
.addToBackStack("historyFragment")
.setTransition(FragmentTransaction.TRANSIT_ENTER_MASK)
.commit();
}
//snip
}
FragmentActivity
繰り返しますが、このビューは、メソッド内のアダプターからアクティビティ (から拡張するように設定したもの) に追加されgetView
ます。
これを実行すると、次の例外が発生します。
Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f0a002d for fragment InspectionHistoryFragment{41983b08 #0 id=0x7f0a002d historyFragment}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:864)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:505)
at roboguice.activity.RoboFragmentActivity.onStart(RoboFragmentActivity.java:60)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
at android.app.Activity.performStart(Activity.java:5018)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
... 11 more
この方法でカスタム コントロールにフラグメントを追加する方法はありますか?