У меня есть действие настроек с ListPreference и PreferenceScreen. Эти два предпочтения загружаются с использованием PreferenceFragment. При щелчке PreferenceScreen второй PreferenceFragment, содержащий список других PreferenceFragment, заменяет первый PreferenceFragment. Второй фрагмент правильно загружен, но не привязан к активности. Когда я нажимаю кнопку «Назад», второй фрагмент правильно отображается в рамках действия, что является желаемым действием, но достигается после нажатия кнопки «Назад», а не после нажатия PreferenceScreen.
Вот код SettingsActivity:
public class SettingsActivity extends Activity {
private static String TAG = "SettingsActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setDisplayShowHomeEnabled(false);
setContentView(R.layout.settings);
Log.i(TAG, "SettingsActivity called");
if(findViewById(R.id.fragment_container) != null) {
if(savedInstanceState != null) {
return;
}
getFragmentManager().beginTransaction().add(R.id.fragment_container,
new SettingsFragment()).commit();
}
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings_preference);
PreferenceScreen ps = (PreferenceScreen) getPreferenceManager().findPreference("nots");
ps.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
SettingsFragment1 sf1 = new SettingsFragment1();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, sf1);
transaction.addToBackStack(null);
//transaction.attach(sf1); this proved to be redundant
transaction.commit();
return true;
}
});
}
}
public static class SettingsFragment1 extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings1_preference);
}
}
}
Что может быть не так? заранее спасибо