您可以创建一个包含 frameLayout 的 Activity,其 id 类似于 fragment_container。
然后从您的活动中执行以下操作:
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
这将在您的 Activity 布局中放置一个片段。当你想替换它时,你只需创建第二个片段并做同样的事情。如果您想让它更容易,只需将其用作方法:
public void replaceFragment(Fragment fragment, Context context) {
FragmentTransaction transaction = context.getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
当您需要显示一个片段或将一个片段交换为已经显示的片段时使用它。作为 Context 使用保存片段的活动。
这个想法是你有一个活动作为片段的包装器。在其布局文件中,您为要显示的片段创建一个空间,并使用上述方法,将空白空间替换为片段的布局。如果您在参数中使用不同的片段再次调用它,它将自动用新片段的布局替换该空间。
编辑:如果您想使用按钮来回切换,请在您的活动布局中添加一个按钮并设置一个 onClick 侦听器。然后使用一个标志来选择要显示的片段。
boolean isFragmentOneDisplayed;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFragmentOneDisplayed) {
FragmentTwo fragment = new FragmentTwo();
replaceFragment(fragment, MainActivity.this);
isFragmentOneDisplayed = false;
} else {
FragmentOne fragment = new FragmentOne();
replaceFragment(fragment, MainActivity.this);
isFragmentOneDisplayed = true;
}
}
});