两个片段重叠的按钮

Buttons On Two Fragments Overlapping

所以我有两个片段,比如说 Fragment1 和 Fragment2 。并且两者都有自己的布局文件。在第一个片段 (Fragment1) 上有六个按钮。所以当我点击第一个按钮时,我希望它显示 Fragment2 但是当我点击第一个按钮时两者重叠。

检查下面的屏幕截图

这是片段1

这是片段 2,它与片段 1 重叠

我使用了所有可能的解决方案,但 None 有效。 我将背景设置为白色或黑色甚至图像。 none 有效。

我在 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;
}}

片段2

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

请检查有什么问题。

文档建议您始终使用 FrameLayout 来替换片段。我在这一行的代码中看到了这个问题

 fragmentTransaction.replace(R.id.frag1,new Fragment2());

您似乎没有容器 (FrameLayout) 来替换其中的片段。要解决这个可能的设计问题,您应该为 Main Activity 创建一个 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);
}

那么您应该在 activity 的 onCreate() 方法中将 fragment1 添加到您的容器中,这样您就不会在打开应用程序时出现黑屏