两个片段重叠的按钮

时间:2018-01-28 11:03:47

标签: java android xml android-fragments overlapping

所以我有两个片段,比如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

请检查出错了。

1 个答案:

答案 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添加到容器中,以便在打开应用程序时不会出现空白屏幕