0

请看下面的图片

在此处输入图像描述

在左侧面板中有 2 个类别,名为 Ticket 和 Audit,每个类别都有一个后退按钮。票有 2 ListView's。如果我单击 1st 中的任何项目Listview,它将打开 2nd Listview。同时,如果我点击返回,我将再次看到 1st 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();        
}

当我按下后退按钮时,从后堆栈替换 Fragment

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 Fragment 将被添加到 Activity。现在,如果我切换到 Audit,选择 1 个列表项,然后切换到 Ticket,加载需要一些时间,当我再次切换回 Audit 时,我看不到第二个 ListView(它应该存储在后堆栈中)。它从一开始就加载(显示第一个 ListView)。

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

4

1 回答 1

0

终于解决了我的问题。这里有一个很好的示例。此外,它在这里讨论。

于 2013-08-06T07:29:42.097 回答