Android全局菜单架构建议

Android全局菜单架构建议,android,android-layout,Android,Android Layout,我们已经在我们的应用程序中实现了一个类似facebook的风格菜单,它基本上允许你点击一个按钮,然后将视图滑动到一侧,以访问隐藏在顶层视图后面的菜单 目前,我们所有的视图(这个应用程序有很多屏幕)和任何典型的Android应用程序一样,都保存在单独的XML文件中。我应该指出,我们大量使用碎片 我们的目标是以这样一种方式将代码抽象出来,而不是将我们的活动和片段膨胀到顶级视图,而是现在将其膨胀到这个顶级父级的子级,它将是我们所有活动的一部分(来自自定义活动的所有活动子类) xml的工作方式是拥有一个

我们已经在我们的应用程序中实现了一个类似facebook的风格菜单,它基本上允许你点击一个按钮,然后将视图滑动到一侧,以访问隐藏在顶层视图后面的菜单

目前,我们所有的视图(这个应用程序有很多屏幕)和任何典型的Android应用程序一样,都保存在单独的XML文件中。我应该指出,我们大量使用碎片

我们的目标是以这样一种方式将代码抽象出来,而不是将我们的活动和片段膨胀到顶级视图,而是现在将其膨胀到这个顶级父级的子级,它将是我们所有活动的一部分(来自自定义活动的所有活动子类)

xml的工作方式是拥有一个外部FrameLayout,它承载一个空的嵌套子FrameLayout

我们试图避免的是将这个外部菜单代码包装在我们的每一个视图XML中,尽管这肯定会起作用

我试图找到一种编程方式,将带有空嵌套FrameLayout的菜单代码放在一个文件中。然后,当我们膨胀片段或活动的XML时,如下所示:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);
我们没有这样做,而是将其膨胀到嵌套的子框架布局中。这就是我正在尝试的:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);
    ((FrameLayout) getActivity().findViewById(R.id.child)).addView(listView);
当前这导致:“无法恢复活动。找不到片段MyFragment[id=0x7f090019]的id为0x7f090019的视图。”


欢迎您的任何意见。谢谢大家!

对于类似的样式菜单,我所做的是添加一个框架布局,并在其中膨胀一个片段。然后,我使用translateAnimation和layoutApp将屏幕翻译到正确的位置。我将所有这些代码保存在一个slidingDrawerActivity中,它很好地分割了代码,这样我就可以调用SlideOutMenu来使用它

希望这有帮助-如果你想要更多的DEET,请告诉我

编辑:

使用支持库用片段替换框架布局的代码

FragmentTransaction FT=getFragmentManager().beginTransaction();
FT.replace(R.id.yourFrameLayout, new YourFragment(), yourFragmentTag);
FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
FT.commit();

我在“将碎片膨胀成碎片”这一部分遇到了麻烦。此问题可能与我的自定义父活动有关,目前还不确定。是否使用兼容库?如果是这样,您需要使用extend a FragmentActivity而不是普通的activity,并使用get support fragment manager。请参阅:父活动是一个片段活动。