0

我们已经为我们的应用程序实现了一个类似 facebook 的样式菜单,它基本上允许您单击一个按钮并将视图滑动到侧面以访问隐藏在顶层视图后面的菜单。

目前,与任何典型的 Android 应用程序一样,我们将所有视图(此应用程序有很多屏幕)保存在单独的 XML 文件中。我应该注意到我们大量使用了片段。

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

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

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

我正在尝试找到一种编程方式,将菜单代码与空的嵌套 FrameLayout 放在一个文件中。然后当我们去膨胀片段或活动的 XML 时,像这样:

listView = (PullToRefreshListView) inflater.inflate(R.layout.pull_to_refresh_list_view, container, false);

我们不这样做,而是将其膨胀到嵌套的子 FrameLayout 中。我正在尝试这样的事情:

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 的视图”

任何输入表示赞赏。谢谢!

4

1 回答 1

0

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

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

编辑:

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

FragmentTransaction FT=getFragmentManager().beginTransaction();
FT.replace(R.id.yourFrameLayout, new YourFragment(), yourFragmentTag);
FT.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
FT.commit();
于 2012-09-25T22:21:34.553 回答