Zeigen Sie die Einstellungen über „Einstellungen“ im Dreipunktmenü an
-
21-12-2019 - |
Frage
Ich richte einige Grundeinstellungen für meine Android-Anwendung ein und habe einige Probleme.Erstens konnte ich nicht herausfinden, wie ich das Dreipunktmenü oben rechts in der Aktionsleiste verwenden kann, um die Einstellungen zu öffnen.Deshalb habe ich vorübergehend eine Schaltfläche erstellt, die „chooseSettings“ aufruft:
public void chooseSettings(View view) {
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}
Dies ist der Code für meine PreferenceActivity-Klasse:
public class PreferenceActivity extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
Welche Art von funktioniert.Das führt dazu, dass mein Bildschirm so aussieht:.
Lösung
Einstellungen im Überlaufmenü
Um die Einstellungen im Überlaufmenü verwenden zu können, müssen Sie die überschreiben onOptionsItemSelected Methode, falls noch nicht geschehen, und verarbeiten Sie die richtige ID.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
// Code to show settings.
return true;
}
return super.onOptionsItemSelected(item);
}
Ersetzen R.id.action_settings
mit der ID Ihres Menüpunkts.
Anzeige des PreferenceFragments
Wie Sie in Ihrem Bild gezeigt haben, überlappt Ihr Einstellungsbildschirm das vorhandene Layout.
Beachten Sie, dass Sie nur ein Fragment ersetzen können, das Sie hinzugefügt haben dynamisch.
Ich vermute, dass die XML-Datei für Ihren Bildschirm mit den Schaltflächen „Land erraten“ und „Flaggen erraten“ aufgeblasen wurde und nicht dynamisch als Fragment hinzugefügt wurde, sodass sie durch Hinzufügen des Einstellungsfragments einfach überlappend angezeigt würde.
Lösung
Eine Möglichkeit, dies zu erreichen, besteht darin, eine neue Aktivität zu erstellen und zu starten, die Ihr Einstellungsfragment lädt.
Wenn Sie beispielsweise eine Klasse mit dem Namen erstellen SettingsActivity
Dadurch werden die Einstellungen geladen (Vergessen Sie nicht, sie zu AndroidManifest hinzuzufügen):
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}
}
Dann in deinem onOptionsItemSelected
, können Sie die Einstellungsaktivität starten.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
Andernfalls müssten Sie Ihr Hauptlayout ändern, um so etwas wie ein Rahmenlayout zu verwenden, damit Sie Fragmente ordnungsgemäß hinzufügen/entfernen/ersetzen können.