1

我的应用程序使用ActionBarCompatand NavigationDrawer,这就引出了一个应该如何构建导航的问题?我看到两个选项:

1)使用单Activity并换出Fragments

2)使用多个Activities,并在它们之间转换。

后者似乎是正确的方法,但这意味着每个人都Activity必须获取并构建ActionBarandNavigationDrawer当从另一个调用时Activity

这将如何影响我的过渡动画?如果单击导航项时我有从左到右的转换效果,它会转换整个Activity或下面的所有内容ActionBar吗?

前者似乎充满了问题。单个 .java 类文件可能会变得非常繁重且难以管理。

但是,当我们讨论 的主题时Fragments,请考虑这种情况并指导我进行正确的片段管理:

Activity一个只有 a的空白会LinearLayout附加一个Fragment包含Button. 在Fragment类内部,此按钮获得一个,当单击该按钮时,应将onClickListener另一个相同类型的附加到内部。FragmentLinearLayoutActivity

A) 班级是否应该与该Fragment班级沟通应该附加Activity一个新的?Fragment这可以通过自定义和在类public interface中执行的回调来完成。onClickListenerFragment

B)或者,是否应该Fragment将新实例附加到 内部onClickListener,从而Activity减少工作量?通过简单地桥接单击Button并调用 .getParent() 直到LinearLayout到达,然后将其附加到那里。

4

1 回答 1

1

一个只有 LinearLayout 的空白 Activity 会附加一个包含 Button 的新 Fragment。在 Fragment 类中,此按钮获取一个 onClickListener,当单击该按钮时,应将另一个相同类型的 Fragment 附加到 Activity 内的 LinearLayout。

A) Fragment 类是否应该向 Activity 传达应附加新的 Fragment 的信息?这可以通过自定义公共接口和在 Fragment 类的 onClickListener 中执行的回调来完成。

B) 或者,Fragment 是否应该在 onClickListener 中附加新实例,从而减少 Activity 的工作量?通过简单地桥接单击的 Button 并调用 .getParent() 直到达到 LinearLayout,然后将其附加到那里。

您可以只调用 FragmentManager 并从片段本身进行替换事务。

FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(container_id, newFragment, tag);
transaction.commit();

因为Activity有FragmentManager,所以不需要和Activity通信。 http://developer.android.com/guide/components/fragments.html#Transactions

我的应用程序使用 ActionBarCompat 和 NavigationDrawer,这引出了一个问题,即应该如何构建导航?我看到两个选项:

1)使用单个活动并换出片段。

2)使用多个活动,并在它们之间进行转换。

后者似乎是正确的方法,但这意味着每个 Activity 在从另一个 Activity 调用时必须获取并构建 ActionBar 和 NavigationDrawer。

只要你在每个Activity/Fragment中拥有相同的NavigationDrawer,你选择哪种方式都可以。

这将如何影响我的过渡动画?如果我在单击导航项时有从左到右的过渡效果,它会过渡整个 Activity 还是 ActionBar 下方的所有内容?

如果您更改 Activity,它将转换到整个屏幕,如果您使用 Fragment,则在 ActionBar 下方。如果您交换 Fragment,请不要忘记关闭 NavigationDrawer。

于 2013-10-06T05:29:33.890 回答