Альтернативы PreferenceFragment с поддержкой android-v4

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

Это мое главное окно на данный момент

          

Для моей TabActivity я использую то, что я нашел в Интернете. Вот fragment:

 public class TabControlActivity extends FragmentActivity implements TabHost.OnTabChangeListener { public static final int INSERT_ID = Menu.FIRST; public static TabControlActivity thisCtx; private TabHost mTabHost; private HashMap mapTabInfo = new HashMap(); private TabInfo mLastTab = null; private class TabInfo { private String tag; private Class clss; private Bundle args; private Fragment fragment; TabInfo(String tag, Class clazz, Bundle args) { this.tag = tag; this.clss = clazz; this.args = args; } } class TabFactory implements TabContentFactory { private final Context mContext; /** * @param context */ public TabFactory(Context context) { mContext = context; } /** (non-Javadoc) * @see android.widget.TabHost.TabContentFactory#createTabContent(java.lang.String) */ public View createTabContent(String tag) { View v = new View(mContext); v.setMinimumWidth(0); v.setMinimumHeight(0); return v; } } ...*snip*... 

Есть ли что-нибудь, чтобы реализовать что-то, что напоминает preferencefragment (или preferenceActivity), используя библиотеку совместимости android-support-v4?

ОБНОВЛЕНИЕ – 6/11/2015

Библиотека поддержки-v7 теперь включает PreferenceFragmentCompat . Поэтому лучше использовать его.


Добавьте в приложение следующий проект как проект библиотеки.

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

Вы можете хранить все, включая транзакцию fragmentа, как есть. При импорте classа PreferenceFragment убедитесь, что правильный заголовок импорта является пользователем.

 import android.support.v4.preference.PreferenceFragment; 

вместо

 import android.preference.PreferenceFragment; 

Я знаю, что это старый вопрос, но теперь вы можете использовать PreferenceFragmentCompat из com.android.support:preference-v7:23.3.0

Важное обновление: последняя версия v7 support library теперь имеет собственный PreferenceFragmentCompat .

Я использую эту библиотеку , которая имеет AAR в mavenCentral поэтому вы можете легко включить ее, если используете Gradle .

compile 'com.github.machinarius:preferencefragment:0.1.1'

Вы можете использовать мой собственный PreferenceFragment .

Это просто, и до сих пор у меня не было никаких проблем. Я думаю, что вы можете отображать только один из них за один раз в одном действии, который должен быть в порядке.

Библиотека поддержки предпочтений: fragmentы предпочтений для API 7+, независимо от активности

Простая реализация включает в себя PreferenceFragmentCompat, например:

 public class PreferencesFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { addPreferencesFromResource(R.xml.preferences); } } 

Вам также нужно установить preferenceTheme в вашей теме:

  

И добавьте это в зависимости: http://developer.android.com/tools/support-library/features.html

 com.android.support:preference-v14:23.1.0 

Вы, возможно, используете реальную деятельность и используете fragment, но я не думаю, что это хороший выбор. Вы должны использовать простую PreferenceActivity и ждать усовершенствований в стиле ретро-совместимости.

Вы можете использовать сторонние библиотеки, такие как UnifiedPreferences, для использования единого API для всех версий Android.

Вместо этого вы можете перейти от PreferenceActivity , и если вы хотите иметь ActionBar, вы можете добавить его, используя панель инструментов, как выше ListView, используемого для предпочтений.

Это можно сделать, используя вертикальный LinearLayout, который содержит панель инструментов и ListView с android: id = “@ android: id / list” .

Если вы хотите, вы можете увидеть мое решение здесь .

Как сказал Люциус, вы можете использовать PreferenceFragmentCompat :

 public class MyPreferenceFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle bundle, String s) { PreferenceManager.setDefaultValues(getActivity(), R.xml.preferences, false); addPreferencesFromResource(R.xml.preferences); } } 

Вы должны включить его зависимость в gradle:

 dependencies { ... compile 'com.android.support:preference-v7:23.1.X' (wherX = 0,1,...) ... } 

Таким образом вы также можете использовать FragmentTransaction android.support.v4.app.FragmentTransaction и PrefernceFragment. Однако у вас могут быть проблемы с темами. Если это так, вы можете решить это с учетом этого сообщения:

Решение сделать работу с lib на API 7+ при сохранении материальной темы на API 14+

  • Ссылка должна быть открыта в том же веб-браузере в Android
  • Получение проблемы при проверке динамически созданного флажка через просмотр списка
  • Android - аккордеонный виджет
  • Тег Html List не работает в текстовом виде Android. Что я могу сделать?
  • При создании POJO в Firebase вы можете использовать ServerValue.TIMESTAMP?
  • Как отобразить маршрут между двумя геокоординатами на картах Google?
  • API-ключ для GCM неожиданно недействителен? Несанкционированная ошибка (401)
  • Как заставить ArrayAdapter следовать шаблону ViewHolder?
  • Только макет загрузки, когда звонки с помощью колоды
  • Отправка и анализ объектов JSON в Android
  • Почему я хочу избегать конструкторов не по умолчанию в fragmentах?
  • Давайте будем гением компьютера.