决定重写这个问题:
我有三个片段,称为 AB C。每个片段都有一个视图,其中包含一些字段供用户填写。用户应该能够使用菜单在不同的片段之间切换。如果用户在片段 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();
}
谢谢你,内森