Android 如果用另一个片段替换当前片段,则未显示任何内容

Android 如果用另一个片段替换当前片段,则未显示任何内容,android,android-layout,Android,Android Layout,我有这样的布局: frame_layout.xml 当我调用此代码一次时,片段显示得非常完美!但是,当它调用两次时,我看不到任何内容! 经过调查,我发现问题的原因是: setContentView(R.layout.fragment_layout); 例如,当它被调用一次时,片段内容就会完美地显示出来!但是我需要多次调用setContentView来显示另一个片段 哪里错了 另外,可以将MyListFragment硬编码为XML,但这不适合我,因为我需要用其他片段替换布局内容。由于没有人回答

我有这样的布局:

frame_layout.xml

当我调用此代码一次时,片段显示得非常完美!但是,当它调用两次时,我看不到任何内容! 经过调查,我发现问题的原因是:

 setContentView(R.layout.fragment_layout);
例如,当它被调用一次时,片段内容就会完美地显示出来!但是我需要多次调用
setContentView
来显示另一个片段

哪里错了


另外,可以将
MyListFragment
硬编码为XML,但这不适合我,因为我需要用其他片段替换布局内容。

由于没有人回答,我找到了另一种解决方案:为每个帧保留布局并显示/隐藏它们

我就是这样做的。。。。主要布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/container1"
    android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

<FrameLayout
    android:id="@+id/container2"
 android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>
 setContentView(R.layout.fragment_layout);
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<FrameLayout
    android:id="@+id/container1"
    android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>

<FrameLayout
    android:id="@+id/container2"
 android:visibility="gone"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>
findViewById(R.id.container1).setVisibility(View.GONE);
findViewById(R.id.container2).setVisibility(View.VISIBLE);

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
String tag = MyFragment.class.getName();
Fragment fragment = (Fragment)getSupportFragmentManager().findFragmentByTag(tag);
if (fragment == null) {
   fragment = new MyFragment();
   ft.add(R.id.container2, fragment, tag);
}

ft.addToBackStack(null);
ft.commit();