Создать класс для создания экземпляра PreferenceFragment

У меня есть приложение с фрагментами. У меня проблемы с получением PreferenceFragment для работы. Один из фрагментов - страница настроек. Для этого я хочу использовать PreferenceFragment, однако я разработал свое приложение, используя android.support.v4.app.FragmentManager, который не совместим с PreferenceFragment. Ссылка ниже содержит описание и ссылку на код, который будет работать с v4.

https://github.com/codepath/android_guides/wiki/Settings-with-PreferenceFragment

https://github.com/kolavar/android-support-v4-preferencefragment

Моя основная деятельность

private class CustomAdapter extends FragmentPagerAdapter {

private String fragments [] = {"Event","Gallery","Match","Settings"};

public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) {
    super(supportFragmentManager);
}

@Override
public Fragment getItem(int position) {
    switch (position){
        case 0:
            return new event();
        case 1:
            return new gallery();
        case 2:
            return new match();
        case 3:
            return new PreferenceFragment();
        default:
            return null;
    }
}

ошибка: "PreferenceFragment" является абстрактным, не может быть создан.

PreferenceFragment

public abstract class PreferenceFragment extends Fragment implements
        PreferenceManagerCompat.OnPreferenceTreeClickListener {

    private static final String PREFERENCES_TAG = "android:preferences";

Мне сказали, что я не могу создать экземпляр PreferenceFragment напрямую, мне нужно создать класс, который его расширяет. Может кто-нибудь объяснить, как я поступил бы в этом случае? Бесконечно благодарен!:-)

1 ответ

Решение

Например:

public class MyPreferenceFragment extends PreferenceFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.fragment_preference);
    }
}

И связанный с ним XML-файл:

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory 
        android:title="FOO">

        <CheckBoxPreference
            android:key="checkBoxPref"
            android:title="check it out"
            android:summary="click this little box"/>

    </PreferenceCategory>

</PreferenceScreen>

Источник: Как вы создаете Preference Activity и Preference Fragment на Android?

Другие вопросы по тегам