Я также застрял с точно такой же проблемой, и после того, как попробовал пару вещей, я обнаружил, что это происходит, потому что в моем случае я перепутал две разные версии Fragments и FragmentManager.
OnCreate моей MainActivity выглядело так:
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new MainFragment())
.commit();
Однако, когда я захотел заменить этот MainFragment своим собственным PreferenceFragment, я попытался использовать нечто похожее на то, что вы использовали:
getFragmentManager().beginTransaction()
.replace(R.id.container, new SettingsFragment())
.addToBackStack(null)
.commit();
Насколько я понимаю, вы должны использовать тот же тип FragmentManager для замены для работы, поэтому мне просто нужно было пойти дальше и внести соответствующие изменения в способ, которым я подключил MainFragment, чтобы он выглядел так:
getFragmentManager().beginTransaction()
.add(R.id.container, new MainFragment())
.commit();
Конечно, мне пришлось реорганизовать MainFragment для расширения с android.app.Fragment
вместо android.support.v4.app.Fragment