当前位置: 首页 > 知识库问答 >
问题:

用另一个片段替换片段,并删除视图

郑嘉年
2023-03-14

我有一个活动和两个片段。片断a和片断b。

我需要实现像,最初碎片应该在那里。在按钮之后,单击FragmentB应该在那里。

public class FragmentActivity extends AppCompatActivity {

FrameLayout activityFragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fragment);
    activityFragment = (FrameLayout) findViewById(R.id.activityFragment);
    Fragment fragment = new FragmentA();
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.add(R.id.activityFragment, fragment);
    transaction.commit();
}

public void goToFrag(View view) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    Fragment fragment = new FragmentB();
    transaction.add(R.id.fragmentRoot, fragment);
    transaction.commit();
}
}
  public class FragmentA extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View view=inflater.inflate(R.layout.fragment_a,container,false);
    return view;
}
}

我的第二段代码:

   public class FragmentB extends Fragment {
public FragmentB() {
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     super.onCreateView(inflater, container, savedInstanceState);
    View view=inflater.inflate(R.layout.fragment_b,container,false);
    return view;
}
}

共有1个答案

公冶嘉茂
2023-03-14

首先,您应该始终在xml中使用FrameLayout来替换片段,然后使用不同的容器来添加片段ActivityFragmentFragmentRoot。对于FragmentManager,您可以使用AddReplace,因此ActivityFragment是您使用的容器(正如文档建议的那样,它应该是作为包装器的framelayout)

public void goToFrag(View view) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    Fragment fragment = new FragmentB();
    transaction.replace(R.id.activityFragment, fragment); // use the same container where you switch A and B
    transaction.commit();
}
 类似资料:
  • 我试图通过活动中按钮的onclick事件将一个主片段替换为另一个片段,但该片段恰好悬停在主片段上。 这是我的密码

  • 我正在制作抽屉菜单,目前正在使用: getSupportFragmentManager()。开始交易()。替换(R.id.mainfragment,f1)。提交(); 但是正如你所看到的,它总是用新的片段替换主片段。谢谢!

  • 问题内容: 我在小组活动中有一个片段,我想用另一个片段替换它: 在不使用活动组的情况下作为单独的项目完成时,它工作正常,当控件进入getview()时,每件事在日志猫中都可以正常工作,但是没有视图可见,甚至没有任何异常出现,我希望将书详细信息片段由部分详细信息片段代替。 图书详细信息片段的XML具有id book_description_fragment,而部分描述片段的xml具有id secti

  • 在我的应用程序中,当点击导航抽屉上的不同项目时,我需要在片段之间切换。我为它创建了一个新方法DisplayFragment。代码如下: 它显示了错误的"片段元素在上面的行如下"错误的第二个参数类型找到android.support.v4.app.片段;需要android.app.片段;" 我试着改变从android的导入。支持v4.app。碎片到android。应用程序。碎片但它随后显示了Frag

  • 我试图打开一个片段,当一个对话框被点击在另一个片段。我在用ActionBarSherlock和Tab。我的片段附在视图页中。我几乎完成了这项工作。但是我不能替换视图页内的新片段。我有个错误。我读了这里的线程。解决办法还不清楚。 10-18 21:34:40.379:e/AndroidRuntime(19618):致命异常:main 10-18 21:34:40.379:e/AndroidRunti