この質問を書き直すことにしました:
私はそれらをABCと呼ぶ3つのフラグメントを持っています。それぞれはユーザーが記入するためのいくつかのフィールドを持つビューを持っています。ユーザーは、メニューを使用してさまざまなフラグメントを切り替えることができるはずです。ユーザーがフラグメントAに情報を入力してから、Cに切り替えると、さらに情報が入力されてからAに戻る場合、ユーザーがAに入力した情報はまだそこにあるはずです。
どういうわけかFragmentManagerを使用する必要があると思いますが、追加/置換/接続の正しい組み合わせを理解できません...それを希望どおりに機能させるために必要です。
誰かが、各フラグメントのビューステートを維持しながらフラグメントを切り替えることができるコードスニペットを提供できますか?
現在の実用的なソリューション:
mContentはアクティブなフラグメントであり、アクティビティのプライベートメンバー変数です。
このアプローチまたはそれをより効率的/より堅牢にする方法に何か問題があると誰かが見た場合は、私に知らせてください!
public void switchContent(String fragmentTag) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if ( fragmentManager.findFragmentByTag( fragmentTag ) != mContent ) {
if ( !mContent.isDetached() ) {
transaction.detach( mContent );
}
if ( fragmentManager.findFragmentByTag( fragmentTag ) == null ) {
if ( fragmentTag.equals( "details" ) ) {
mContent = ScheduleDetailsFragment.newInstance();
} else if ( fragmentTag.equals( "notes" ) ) {
mContent = ScheduleNotesFragment.newInstance();
} else if ( fragmentTag.equals( "exceptions" ) ) {
// @TODO - Create Exceptions Fragment
}
} else {
mContent = ( SherlockFragment ) fragmentManager.findFragmentByTag( fragmentTag );
}
if ( mContent.isDetached() ) {
transaction.attach( mContent );
} else if ( !mContent.isAdded() ) {
transaction.add( R.id.content_frame, mContent, fragmentTag );
}
transaction.commit();
}
getSlidingMenu().showContent();
}
ありがとう、ネイサン