Android 如何替换TableLayout活动中的片段

Android 如何替换TableLayout活动中的片段,android,android-fragments,android-tabs,Android,Android Fragments,Android Tabs,我有一个关于我的活动的表格,有三个标签,每个标签都附在一个片段上。这些都能正常加载和工作。我的问题是当我尝试在运行时替换其中一个片段时 通过将ViewPager(R.id.view\u pager)对象作为容器,当我尝试膨胀新片段时,两个视图都会消失: public void changeToNewFragment(){ NewFragment newFragment = new NewFragment(); FragmentManager fragmentManager = g

我有一个关于我的活动的表格,有三个标签,每个标签都附在一个片段上。这些都能正常加载和工作。我的问题是当我尝试在运行时替换其中一个片段时

通过将ViewPager(
R.id.view\u pager
)对象作为容器,当我尝试膨胀新片段时,两个视图都会消失:

public void changeToNewFragment(){
    NewFragment newFragment = new NewFragment();
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.view_pager, newFragment).addToBackStack(null).commit();
}
如果我尝试使用
R.id.container
以整个视图为目标,则会出现新片段,覆盖在当前片段的顶部:

public void changeToNewFragment(){
    NewFragment newFragment = new NewFragment();
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(R.id.container, newFragment).addToBackStack(null).commit();
}

如何在“表格布局”下放大此新视图,以便仅显示此新视图?此视图应成为选项卡的一部分,这意味着如果单击了另一个选项卡,此视图将被刷走。

您不能在ViewPager上执行碎片事务。你可以,但我个人不喜欢这种方法。我总是用第二个活动来做这类事情。基本上,创建第二个活动,该活动只有一个框架布局,您可以在其上使用FragmentTransactions。每当您想离开其中一个ViewPager片段时,只需启动另一个活动,并传递额外信息,告诉它要加载哪个片段。@DanielNugent如果我创建第二个活动,这似乎是最好的选择,我如何处理Backback?如果(getFragmentManager().GetBackbackEntryCount()==0),我是否应该从第二个活动中重新创建主活动?请查看此答案中的onBackPressed()覆盖: