请看下面的图片
在左侧面板中有两个名为Ticket和Audit的类别,每个类别都有一个后退按钮。
门票有2 ListView's
。如果我点击第一个Listview
中的任何项目,它将会打开第二个Listview
。
与此同时,如果我再次点击,我将再次看到Listview
。再次回来,将退出申请。
此方案与审核相同。
对于这种情况,我已经花了4 Fragment's
。
xml文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:id="@+id/framelayout_fragment1_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.7">
</FrameLayout>
<fragment
android:id="@+id/detailFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.mobinius.fragments.DetailFragment"
android:layout_weight="0.3"
/>
当我在Ticket和Audit之间切换时有一个翻转动画,反之亦然。
private void flipFragments(String tag) {
System.out.println(" tag in flipFragments : "+tag);
Fragment fragment = getFragmentManager().findFragmentByTag(tag);
System.out.println(" fragment in flipFragments : "+fragment);
if (fragment != null)
{
getFragmentManager().popBackStack(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
return;
}
getFragmentManager()
.beginTransaction()
.setCustomAnimations(
R.animator.card_flip_right_in, R.animator.card_flip_right_out,
R.animator.card_flip_left_in, R.animator.card_flip_left_out)
.replace(R.id.framelayout_fragment1_container, new AuditGroupFragment(), tag)
.addToBackStack(tag)
.commit();
}
当我按下后退按钮时,从后面的堆栈中替换片段
public void onBack(String tag) {
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(tag);
if(fragment != null)
fragmentManager.popBackStack(tag, FragmentManager.POP_BACK_STACK_INCLUSIVE);
else
finish();
}
当我单击任何列表项时,用必需的
替换当前片段public void onListItemClick(String tag, Fragment fragmentToAdd) {
getFragmentManager()
.beginTransaction()
.replace(R.id.framelayout_fragment1_container, fragmentToAdd, tag)
.addToBackStack(tag)
.commit();
}
对于Ticket naivigation,这两个片段都能很好地工作。
问题:
默认情况下,Ticket Fragment将添加到Activity。现在,如果我切换到Audit,选择1列表项,然后切换到Ticket,它需要一些时间加载,当我再次切换回Audit时,我看不到第二个ListView(它应该存储在后台堆栈中)。它从开始加载(显示第一个ListView)。
那么,首先这种方法是否正确?如果没有,请建议正确的方法。