365 Stimmen

Was ist anstelle von "addPreferencesFromResource" in einer PreferenceActivity zu verwenden?

Mir ist gerade aufgefallen, dass die Methode addPreferencesFromResource(int preferencesResId) markiert ist Abgelehnt in der Dokumentation von Android ( Referenzeintrag ).

Leider wird in der Methodenbeschreibung keine alternative Methode angegeben.

Welche Methode sollte stattdessen verwendet werden, um eine preferenceScreen.xml mit der passenden PreferenceActivity zu verbinden?

0voto

Anstatt eine PreferenceActivity um Einstellungen direkt zu laden, verwenden Sie eine AppCompatActivity oder ein gleichwertiges Programm, das eine PreferenceFragmentCompat die Ihre Einstellungen lädt. Es ist Teil der Support-Bibliothek (jetzt Android Jetpack) und bietet Kompatibilität zurück zu API 14.

In Ihrem build.gradle fügen Sie eine Abhängigkeit für die Bibliothek zur Unterstützung von Präferenzen hinzu:

dependencies {
    // ...
    implementation "androidx.preference:preference:1.0.0-alpha1"
}

Hinweis: Wir gehen davon aus, dass Sie Ihr Einstellungs-XML bereits erstellt haben.

Erstellen Sie für Ihre Aktivität eine neue Aktivitätsklasse. Wenn Sie Materialthemen verwenden, sollten Sie eine AppCompatActivity aber Sie können dies flexibel handhaben:

public class MyPreferencesActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_preferences_activity)
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.fragment_container, MyPreferencesFragment())
                    .commitNow()
        }
    }
}

Jetzt kommt der wichtige Teil: Erstellen Sie ein Fragment, das Ihre Einstellungen aus XML lädt:

public class MyPreferencesFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.my_preferences_fragment); // Your preferences fragment
    }
}

Weitere Informationen finden Sie in der Android Developers docs für PreferenceFragmentCompat .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X