Android 如何在同一视图中运行不同的活动

Android 如何在同一视图中运行不同的活动,android,parent-child,subactivity,Android,Parent Child,Subactivity,我正在使用以下项目 开发滑出菜单应用程序 如何通过单击幻灯片菜单中的列表在同一视图中运行不同的活动 例如,如果我单击项目1,我想在一个单独的活动中解析一个XML文件,并将该活动作为子项添加到此父视图。因为在每个项目上单击,我想解析一个单独的XML文件,并且我想在一个单独的布局文件中表示解析后的数据。因此,我需要一个活动来完成这项工作,我希望这样做要作为子级添加到此父视图的活动 我该怎么做?谁能帮我做这件事 如果我开始一个新的意图(startactivity),它将导航到另一个页面。我看不到此父

我正在使用以下项目

开发滑出菜单应用程序

如何通过单击幻灯片菜单中的列表在同一视图中运行不同的活动

例如,如果我单击项目1,我想在一个单独的活动中解析一个XML文件,并将该活动作为子项添加到此父视图。因为在每个项目上单击,我想解析一个单独的XML文件,并且我想在一个单独的布局文件中表示解析后的数据。因此,我需要一个活动来完成这项工作,我希望这样做要作为子级添加到此父视图的活动

我该怎么做?谁能帮我做这件事


如果我开始一个新的意图(startactivity),它将导航到另一个页面。我看不到此父页面的位置

可以嵌入到活动中的UI组件应该从片段而不是活动中派生。将子活动转换为片段时,需要重写onCreateView而不是onCreate,以便加载片段的布局

在主活动的布局中,您可以直接插入最初要显示的片段,并为该片段提供一个ID。然后您可以使用代码将该ID替换为另一个片段

这是一个开始的好地方:

这是一个太大的主题,我无法涵盖所有内容-你真的应该看看Android开发者资源-但这里有一些例子

正如我所说,您可以将初始片段直接放入活动布局中。“片段”位于布局编辑器的“布局”选项卡上。您为该片段占位符提供了一个“Id”,您可以使用它来标识它,以及将在那里开始的片段类的“名称”

然后,当切换片段时,可以使用如下代码:


您不能将活动嵌套在另一个活动中。 但是您可以使用片段instread。
单击项目时,只需通过FragmentManager切换到右侧片段。

首先检查此答案。


在项目中可以有一个主活动

比如说,
MainActivity.java

在该主要活动中,为滑动菜单编写代码

@Override
    public void onCreate(Bundle inState) {
        super.onCreate(inState);

        mMenuDrawer = new MenuDrawerManager(this, MenuDrawer.MENU_DRAG_CONTENT,
                MenuDrawer.MENU_POSITION_RIGHT);

        mMenuDrawer.setContentView(R.layout.appui);
        mMenuDrawer.setMenuView(R.layout.slide_menu_ui);

    }
在同一活动中,初始化菜单组件并为其编写侦听器

现在,

在您的每隔一个活动中,从
main活动扩展


你完成了

如何将片段添加到activity_layer_stack.xml中如何在片段类中编写解析逻辑新片段正在覆盖现有片段如何删除旧片段。transaction.replace()调用将旧片段替换为新片段。只有一个片段可以在屏幕上显示该id。花些时间研究我链接的Android文档页面;实际上,它非常擅长解释片段的概念以及类是如何协同工作的。如果每次单击按钮时使用更多片段,则会出现任何内存问题。当片段将被释放时,请您对这两个问题进行说明。当您使用transaction.replace()(然后是transaction.commit())时,Android不再引用您的旧片段。只要你没有自己做任何引用,旧的片段就会被垃圾收集。你可以使用片段:)如何在每个列表项上调用扩展类单击你不需要在每个列表项上调用扩展类单击,你只需要将那些单击侦听器放在基类中,而不需要在其他子类中编写。这就是OOPS@madanVcan的强大功能。请告诉我如何编写click listener来调用extendedactivity@madanV你查过我给你的答案链接了吗,当我点击菜单项时会看到这一点,它是在打开新活动,而不是关闭幻灯片并覆盖同一布局文件中的现有数据。如果我按“上一步”按钮,它也是在打开以前的活动,我如何解决问题。
@Override
    public void onCreate(Bundle inState) {
        super.onCreate(inState);

        mMenuDrawer = new MenuDrawerManager(this, MenuDrawer.MENU_DRAG_CONTENT,
                MenuDrawer.MENU_POSITION_RIGHT);

        mMenuDrawer.setContentView(R.layout.appui);
        mMenuDrawer.setMenuView(R.layout.slide_menu_ui);

    }