У меня проблемы с изучением фрагментов Android. В моем приложении у меня есть одно действие с 3 фрагментами. Каждый фрагмент должен заменить предыдущий после некоторого действия пользователя. Мой основной макет xml - это простой FrameLayout с идентификатором «контейнер». Что я делаю в методе MainActivity onCreate(), так это добавляю фрагмент по умолчанию в контейнер:
public class HolderActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
....
FragmentList listFragment = new FragmentList();
// Add the fragment to the 'container'
getSupportFragmentManager().beginTransaction()
.add(R.id.container, listFragment).commit();
Начальный экран работает нормально. Затем я добавляю другой фрагмент, основанный на нажатии кнопки:
// Go to settings fragment
FragmentSettings mFragmentSettings = new FragmentSettings();
getFragmentManager().beginTransaction().replace(R.id.container, mFragmentSettings).commit();
Проблема в том, что когда я нажимаю нужную кнопку, приложение не заменяет фрагменты, а просто добавляет новый фрагмент поверх старого, поэтому они схлопываются. Не могли бы вы сказать мне, что я делаю неправильно здесь?
РЕДАКТИРОВАТЬ: когда я пытаюсь использовать getSupportFragmentManager() в моем методе onOptionsItemSelected следующим образом:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
// Go to settings fragment
FragmentSettings mFragmentSettings = new FragmentSettings();
getFragmentManager().beginTransaction()
.replace(R.id.container, mFragmentSettings).commit();
}
return super.onOptionsItemSelected(item);
}
Я получаю эту ошибку: "Метод replace(int, Fragment) в типе FragmentTransaction неприменим для аргументов (int, FragmentSettings)"