碎片/导航抽屉重叠TableLayout?

问题描述:

我需要帮助我的代码。我试图使用Android Studio默认提供的导航抽屉代码。起始屏幕是content_main.xml,问题是如果我在content_main上放置了一个textview或其他东西,它在切换时出现在其他片段/活动上。碎片/导航抽屉重叠TableLayout?

我的代码(我有两个片段,A RelativeLayout的&一个TableLayout,但我会用一个为简单起见):

Registration_fragment.java

public class Registration_fragment extends Fragment { 
View myView; 
@Nullable @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.registration_frag,container,false); 
    return myView; 
} 

content_main.xml

<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:layout_width="match_parent" 
android:layout_height="match_parent" 

app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.company.myName.projectname.MainActivity" 
tools:showIn="@layout/app_bar_main"> 

<FrameLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/content_frame" 
> 
</FrameLayout> 

registration_frag.xml

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/testFrag"> 

<TableRow> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/first_name" 
    android:layout_marginLeft="10dp" 
    android:id="@+id/fnametext" 
    /> 
    </TableRow> 
    ... </TableLayout> 

MainActivity.java

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    android.app.FragmentManager fragmentManager = getFragmentManager(); 
    if (id == R.id.nav_registration) { 
     // Handle the camera action 
     fragmentManager.beginTransaction().replace(R.id.content_frame, 
       new Registration_fragment()).commit(); 

    } else if (id == R.id.nav_records) { 
     fragmentManager.beginTransaction().replace(R.id.content_frame, 
       new Records_fragment()).commit(); 
    } else if (id == R.id.nav_signup) { 

    } else if (id == R.id.nav_manage) { 

    } else if (id == R.id.nav_share) { 

    } else if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

我真的可以使用一些帮助理解概念。

尝试将R.id.content_frame更改为R.id.container。我看到你正在使用容器来充气。我有类似的设置,但它工作正常与R.id.container

fragmentManager.beginTransaction().replace(R.id.container, 
       new Registration_fragment()).commit();