PreferenceFragment отображается прозрачно - PullRequest
12 голосов
/ 03 декабря 2011

Я пытаюсь отобразить PreferenceFragment после того, как выбрал параметр «Настройки» на панели действий. Однако после замены текущего контента на PreferenceFragment вы можете увидеть старый контент под ним. Как в, вы можете видеть прямо через настройки.

Я что-то здесь упускаю? Я использовал пример из своей книги, в которой не было файлов макета для настроек. Вам это нужно?

Используемый код:

Меню панели действий

private boolean MenuChoice(MenuItem item) {
        switch (item.getItemId()) {
        case 0:
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction =
            fragmentManager.beginTransaction();
            ReaderPreferences prefs = new ReaderPreferences();
            fragmentTransaction.replace(android.R.id.content, prefs);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
            return true;

        }
        return false;
    }

PreferenceReader

public class ReaderPreferences extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // --load the preferences from an XML file---
        addPreferencesFromResource(R.xml.preference);
    }
  }

Фактический результат:

enter image description here

Как видите, вы смотрите сквозь мои предпочтения. Что я сделал не так?

Ответы [ 11 ]

0 голосов
/ 03 декабря 2011

В итоге исправил это очень легко.

Я просто назвал PreferenceFragment в новом Intent, и он отлично работал.

Для тех, у кого такая же проблема:

Prefs.java

public class ReaderPreferences extends PreferenceActivity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // --load the preferences from an XML file---
            addPreferencesFromResource(R.xml.preference);
        }

На моем главном экране при нажатии кнопки:

Intent i = new Intent(this, Prefs.class);
            startActivity(i);

Вот и все,После настройки предпочтений просто нажмите кнопку «Назад» и все готово.

...