Preference-Unterbildschirm öffnet sich nicht bei Verwendung von support.v7.preference

Ich versuche, Einstellungen mit Unterbildschirmen mithilfe von AppCompatActivity und support.v7.preference zu implementieren.

Gemäß den Dokumenten fungiert jeder PreferenceScreen in einem anderen PreferenceScreen als Unterbildschirm, und das Framework übernimmt die Anzeige, wenn Sie darauf klicken.http: //developer.android.com/guide/topics/ui/settings.html#Subscreen

<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- opens a subscreen of settings -->
    <PreferenceScreen
        android:key="button_voicemail_category_key"
        android:title="@string/voicemail"
        android:persistent="false">
        <ListPreference
            android:key="button_voicemail_provider_key"
            android:title="@string/voicemail_provider" ... />
        <!-- opens another nested subscreen -->
        <PreferenceScreen
            android:key="button_voicemail_setting_key"
            android:title="@string/voicemail_settings"
            android:persistent="false">
            ...
        </PreferenceScreen>
        <RingtonePreference
            android:key="button_voicemail_ringtone_key"
            android:title="@string/voicemail_ringtone_title"
            android:ringtoneType="notification" ... />
        ...
    </PreferenceScreen>
    ...
</PreferenceScreen>

Dies funktioniert einwandfrei, wenn Sie native Activity, PreferenceFragment ... verwenden, aber AppCompatActivity und PreferenceFragmentCompat verwenden und auf das Preference-Element klicken, um es nur hervorzuheben, aber den Unterbildschirm nicht zu öffnen.

Ich konnte in den Dokumenten und im Code nichts finden. Muss ich zusätzliche Rückrufe implementieren?

EDIT: nur der Vollständigkeit halber ...

Dies funktioniert und öffnet den Subscreen:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .replace(android.R.id.content, new DemoPreferenceFragment())
                    .commit();
        }
    }

    static public class DemoPreferenceFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

Dies funktioniert nicht / öffne den Subscreen:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .replace(android.R.id.content, new DemoPreferenceFragment())
                    .commit();
        }
    }

    static public class DemoPreferenceFragment extends PreferenceFragmentCompat {

        @Override
        public void onCreatePreferences(Bundle bundle, String s) {
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

Bearbeiten: 25.01.2016

Nach dem Spielen mit support.v7.preference Für ein paar Tage habe ich meine Ergebnisse hier zusammengefasst, in der Hoffnung, dass es anderen helfen kann:Wie verwende ich support.v7.preference mit AppCompat und möglichen Nachteilen?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage