两个片段重叠的按钮
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 添加到您的容器中,这样您就不会在打开应用程序时出现黑屏
所以我有两个片段,比如说 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 添加到您的容器中,这样您就不会在打开应用程序时出现黑屏