带有碎片或活动的导航抽屉?另外,请告诉我正确的片段管理

时间:2013-10-06 05:17:25

标签: java android android-fragments

我的应用使用ActionBarCompatNavigationDrawer,这引出了人们应该如何构建导航的问题?我看到两个选择:

1)使用一个Activity并换出Fragments

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

后者似乎是正确的方式,但这意味着每个Activity必须从另一个ActionBarNavigationDrawer获取并构建ActivityActivity {1}}。

这将如何影响我的过渡动画?如果在点击导航项时我有从左到右的过渡效果,它是否会转换整个ActionBarFragments下面的所有内容?

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

但是,当我们讨论Activity的主题时,请考虑这种情况并让我了解正确的片段管理:

只有LinearLayout的空白Fragment会在其中附加一个包含Button的新Fragment。在onClickListener类中,此按钮获得Fragment,当点击该按钮时,另一个同类LinearLayout应附加到Activity内的Fragment 1}}。

A)Activity班级应该与Fragment通信是否应附加新的public interface?这可以使用自定义onClickListener来完成,并且回调正在Fragment类的Fragment内执行。

B)或者,如果onClickListener句柄将新实例附加到Activity中,是否会使Button更少工作?只需简单地桥接点击的LinearLayout并调用.getParent()直到达到{{1}},然后将其附加到那里。

1 个答案:

答案 0 :(得分:1)

  

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

     

A)Fragment类是否应该与Activity通信应该附加新的片段?这可以使用自定义公共接口完成,并且回调在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通信,因为Activity有FragmentManager。 http://developer.android.com/guide/components/fragments.html#Transactions

  

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

     

1)使用单个活动并交换碎片。

     

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

     

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

只要您在每个活动/片段中都有相同的NavigationDrawer,您可以选择哪种方式。

  

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

如果您更改活动,它将转换到整个屏幕,如果您使用Fragment,它将在ActionBar下方转换。如果你交换Fragment,别忘了关掉NavigationDrawer。