来自 ApiDemos 样例的 FragmentLayout 类中的奇怪 FragmentTransaction

7
抱歉,这个问题是为那些使用Eclipse并有访问ApiDemo示例代码权限的人准备的。具体来说,我正在尝试基于名为“FragmentLayout”的示例创建一个片段活动。
以下代码对我有问题(您可以在ApiDemo的“FragmentLayout.java”文件中找到完整代码,“ShowDetails()”方法):
                // Execute a transaction, replacing any existing fragment
                // with this one inside the frame.
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                if (index == 0) {
                    ft.replace(R.id.details, details);
                } else {
                    ft.replace(R.id.a_item, details);
                }
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.commit();

我有两个问题:

  1. index == 0index != 0之间有什么区别?

  2. 资源R.id_a_item(在所有ApiDemos中只出现一次,在搜索之后)属于某种菜单快捷方式资源,不清楚为什么在这里使用。

Android开发者指南没有解释这段代码。

1个回答

4

index == 0和index != 0有什么区别?

在这段代码中,不应该存在位置0和其他位置之间的差异,因为代码设置为仅使用新的详细信息片段替换先前的片段。

资源R.id_a_item(在所有ApiDemos中仅出现一次,搜索后)属于某种菜单快捷方式资源,不清楚为什么在这里使用它。

很可能这是示例中的错误,因为使用该ID将抛出异常,因为它不存在于当前布局中(我已经在4.2模拟器上运行了API Demos项目,并且它会为该ID抛出找不到视图异常...等)。也许是最新版本的示例中存在的小问题,因为你所质疑的那段代码在其他版本中并不存在。


2
是的,这就是我想的。但在 Android 上你永远不知道,根据墨菲定律,如果我没有问,那么 if( index==0 ) 的东西可能会使应用程序挂起或删除内部 RAM :-) - ilomambo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接