2013-07-23 46 views
0

请各位看看下面的图像多个片段问题

enter image description here

在左侧面板有2个类别命名的机票和审计,每一个后退按钮。 门票有2 ListView's。如果我点击第一个Listview中的任何项目,它将打开第二个Listview。 同时,如果我再次点击,我会再看到第一个Listview。再次回来,将退出应用程序。

这种情况对于审计是一样的。

对于这种情况,我采取了4 。

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" 
    />  

有一个翻转动画时I和票证之间切换到审核反之亦然。

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(); 
} 

门票naivigation替换当前片段,这两个片段都很完美。

问题:

默认情况下,票务片段将被添加到活动。现在,如果我切换到审计,选择1列表项,然后切换到票,它需要一些时间加载,当我再次切换回审计,我不能看到第二个ListView(它应该已经存储在后面的堆栈)。它从开始加载(显示第一个ListView)。

那么,首先这种方法是否正确?如果不是,请提出正确的方法。

回答

0

终于得到解决我的问题。对于相同的here有一个很好的示例。另外,它讨论了here