所以我有两个片段,比如Fragment1和Fragment2。两者都有自己的布局文件。在第一个片段(Fragment1)上有六个按钮。所以当我点击第一个按钮时,我希望它显示Fragment2但是当我点击第一个按钮时两者都重叠。
检查下面的截图
这是FRAGMENT1
这是FRAGMENT2而且它与FRAGMENT1重叠
我使用了所有可能的解决方案,但无效。 我将背景设置为白色或黑色均匀图像。没有用。
我在mainActivity上的代码
public void button1click (View view) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frag1,new Fragment2());
fragmentTransaction.commit();
fragmentTransaction.addToBackStack(null);
}
片段1
public class Fragment1 extends Fragment {
public class onClicks extends AppCompatActivity {
}
View myView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
myView = inflater.inflate(R.layout.fragment1_layout, container, false);
return myView;
}}
Fragment2
public class Fragment2 extends Fragment {
public Fragment2 () {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment2_layout, container, false);
}}
fragment1_layout。 This is fragment1_layout
fragment2_layout。 THIS is the fragment2_layout
请检查出错了。
答案 0 :(得分:0)
文档建议您始终使用FrameLayout替换片段。我在这行代码中看到了这个问题
fragmentTransaction.replace(R.id.frag1,new Fragment2());
您似乎没有容器(FrameLayout)来替换其中的片段。要解决这个可能的设计问题,您应该为主活动创建一个xml,例如添加一个ID为“container”的FrameLayout。然后,以这种方式在代码中使用它
public void button1click (View view) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,new Fragment2());
fragmentTransaction.commit();
fragmentTransaction.addToBackStack(null);
}
然后你应该在你的活动的onCreate()方法中将fragment1添加到容器中,以便在打开应用程序时不会出现空白屏幕