Вы можете создать одно действие, которое содержит frameLayout с идентификатором, аналогичным фрагменту фрагмента.
затем из своей деятельности вы делаете следующее:
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
, который поместит один фрагмент в макет вашей Деятельности. Когда вы хотите заменить это, вы просто создаете второй фрагмент и делаете то же самое. Если вы хотите сделать это проще, просто используйте его как метод:
public void replaceFragment(Fragment fragment, Context context) {
FragmentTransaction transaction = context.getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
и используйте его, когда вам нужно отобразить фрагмент или поменять его на уже отображаемый фрагмент. В качестве контекста используется действие, которое содержит фрагменты.
Идея состоит в том, что у вас есть одно действие в качестве оболочки для фрагмента. В его файле макета вы создаете пространство для фрагмента, который будет отображаться, и с помощью вышеуказанного метода вы заменяете пустое пространство макетом вашего фрагмента. Если вы вызовете его снова с другим фрагментом в аргументах, он автоматически заменит это пространство компоновкой нового фрагмента.
РЕДАКТИРОВАТЬ: Если вы хотите переключаться назад и вперед с помощью кнопки, добавьте кнопку в макет вашей деятельности и установите прослушиватель onClick. Затем используйте флаг, чтобы выбрать, какой фрагмент отображать.
логическое значение 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;
}
}
});