簡體   English   中英

具有自定義片段類的SharedPreferences子PreferenceScreen

[英]SharedPreferences sub PreferenceScreen with custom fragment class

我有一個帶有子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。

您必須創建一個新活動並附加SoundPreferencesFragment。 當您在主設置活動中選擇項目時,啟動新活動

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM