【问题标题】:SharedPreferences sub PreferenceScreen with custom fragment classSharedPreferences sub PreferenceScreen 与自定义片段类
【发布时间】:2014-03-21 16:52:38
【问题描述】:

我有一个带有子 PreferenceScreen 的 PreferenceScreen:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory android:title="SOUND">
        <PreferenceScreen android:title="Sound Options" 
            android:fragment="com.test.SoundPreferenceFragment">

        </PreferenceScreen>
    </PreferenceCategory>
...

子首选项是 PreferenceFragment 的自定义实现

public class SoundPreferencesFragment extends PreferenceFragment implements
        OnSharedPreferenceChangeListener {
...

我想知道我应该如何启动自定义片段。在我的主要活动中,我这样做:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getFragmentManager().beginTransaction().replace(android.R.id.content, settingsPreference).commit();
}

这非常适合启动我的主要设置首选项屏幕。

然后我重写:

    @Override
    public boolean onPreferenceStartFragment(PreferenceFragment fragment, Preference preference) {

        getFragmentManager().beginTransaction().replace(android.R.id.content, new SoundPreferenceFragment()).commit();

       return true;
    }

这似乎可行,但我有几个问题。

  1. 这是正确的方法吗?
  2. 当我进入“声音”首选项并点击返回按钮时,它会完全退出设置。它应该是这样工作的吗?
  3. 我想我也可以告诉子偏好开始一个新的意图,即创建一个新的 SoundPreferencesActivity。这是一种更“正确”的方式吗?

编辑:

我还尝试不在我的主要活动中扩展“onPreferenceStartFragment”,希望 android 能够正确启动新的首选项“它似乎确实启动了新的 PreferenceFragment,但它覆盖了主首选项 UI 之上的 UI .

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    您必须创建一个新活动并附加 SoundPreferencesFragment 。 当您在主设置活动中选择项目时,启动新活动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      相关资源
      最近更新 更多