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