Android 如何创建片段而不覆盖活动顶部?

Android 如何创建片段而不覆盖活动顶部?,android,android-layout,android-fragments,fragmentmanager,Android,Android Layout,Android Fragments,Fragmentmanager,我变了。因为第一个库在我导入要使用的库时出错。但在第一个图书馆,我正在处理navigaiton抽屉项目,点击如下: case 2 : FragmentManager mFragmentManager = getSupportFragmentManager(); Fragment mFragment = new PM_Fragment().newInstance(mHelpLiveo.get(position).getName()); if (mFragment

我变了。因为第一个库在我导入要使用的库时出错。但在第一个图书馆,我正在处理navigaiton抽屉项目,点击如下:

 case 2 :

     FragmentManager mFragmentManager = getSupportFragmentManager();
     Fragment mFragment = new PM_Fragment().newInstance(mHelpLiveo.get(position).getName());

     if (mFragment != null){
         mFragmentManager.beginTransaction().replace(R.id.container, mFragment).commit();
     }

     break;
对于我的第二个库,我得到了“R.id.container找不到”错误。我猜容器id是在库内部创建的。因为这个原因,我试图用一个id来代替。因此,我将我的activity_主布局的第一个id放在下面:

case 2:
    mFragmentManager = getSupportFragmentManager();
    mFragment = new PM_Fragment().newInstance(String.valueOf(position));

    if (mFragment != null) {
        mFragmentManager.beginTransaction().replace(R.id.content_frame, mFragment).commit();
    }

    break;
我的R.id.content_框架来自我的activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

<include
    android:id="@+id/toolbar1"
    layout="@layout/toolbar"/>

<TextView
    android:id="@+id/helloid"
    android:text="@string/hello_world" android:layout_width="wrap_content"
    android:layout_below="@id/toolbar1"
    android:layout_height="wrap_content"
    android:textSize="25dp"/>...

...
但是,当我单击一个项目时,新的片段会写在我的activity_main.xml布局的顶部。这是我的截图:D


任何帮助都将不胜感激。

我想其中一个问题是,您正在相对布局中插入片段,而框架布局更合适;thant我建议您使用谷歌提供的导航视图和抽屉布局Android小部件,而不是第三方库,使用它们非常简单,如果您需要更多关于导航视图的信息以及如何使用它,请告诉我或参考官方文档

以下是指向google开发者页面的链接:


我想其中一个问题是在相对布局中插入片段,而框架布局更合适;thant我建议您使用谷歌提供的导航视图和抽屉布局Android小部件,而不是第三方库,使用它们非常简单,如果您需要更多关于导航视图的信息以及如何使用它,请告诉我或参考官方文档

以下是指向google开发者页面的链接:


内容框架是您的主要活动布局的id,这就是为什么它会发生使用新的相对布局并为其提供id内容框架

内容框架是您的主要活动布局的id,这就是为什么它会发生使用新的相对布局并为其提供id内容框架

这些建议都不能解决OP的问题作为示例提供的XML文件中的空框架布局并将其用作片段事务的容器将解决该问题;正如您所说,现在位于相对布局中的布局部分应该放在不同的布局文件中,并在活动开始显示为“主”片段时动态加载,另一件事是,在我看来,最好使用适当的小部件,如抽屉布局和导航视图,在这种特殊情况下考虑过的;那么你是对的,我的答案没有那么关注“在作为示例提供的XML文件中放置一个空框架布局并将其用作片段事务的容器将解决问题”——你应该在答案中添加类似的内容。从目前的情况看,听起来好像你在说问题只是OP使用了RelativeLayout而不是FrameLayout。这两个建议都没有解决OP的问题。实际上,在作为示例提供的XML文件中放置一个空框架布局并将其用作片段事务的容器可以解决问题;正如您所说,现在位于相对布局中的布局部分应该放在不同的布局文件中,并在活动开始显示为“主”片段时动态加载,另一件事是,在我看来,最好使用适当的小部件,如抽屉布局和导航视图,在这种特殊情况下考虑过的;那么你是对的,我的答案没有那么关注“在作为示例提供的XML文件中放置一个空框架布局并将其用作片段事务的容器将解决问题”——你应该在答案中添加类似的内容。就目前而言,听起来你是说问题在于OP使用的是RelativeLayout而不是FrameLayout。@Mike M,但这意味着我必须为所有片段创建导航抽屉。因为导航抽屉正在使用以下代码获取工具栏:
new-DrawerBuilder().withToolbar(toolbar)
。所以,如果我为每一个创建工具栏,我还必须创建导航抽屉。是的,当我第一次发表评论时,我还没有意识到你们想做什么。这就是我删除它的原因。Ajinkya在正确的轨道上。您需要在
activity\u main
布局中添加一个空视图组来保存片段。@Mike M,但这意味着我必须为所有片段创建导航抽屉。因为导航抽屉正在使用以下代码获取工具栏:
new-DrawerBuilder().withToolbar(toolbar)
。所以,如果我为每一个创建工具栏,我还必须创建导航抽屉。是的,当我第一次发表评论时,我还没有意识到你们想做什么。这就是我删除它的原因。Ajinkya在正确的轨道上。您需要在
activity\u main
布局中添加一个空视图组来保存片段。