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:

a button

    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:.

this

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top