Afficher les paramètres en utilisant « Paramètres » dans le menu à trois points

StackOverflow https://stackoverflow.com//questions/23047221

  •  21-12-2019
  •  | 
  •  

Question

Je suis en train de configurer quelques paramètres de base pour mon application Android et je rencontre des problèmes.Tout d'abord, je n'arrivais pas à comprendre comment utiliser le menu à trois points en haut à droite de la barre d'action pour ouvrir les paramètres.J'ai donc temporairement créé un bouton qui appelle ChooseSettings :

a button

    public void chooseSettings(View view) {
    getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}

Voici le code de ma classe PreferenceActivity :

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);
 }
}

Quel genre de travaux.Cela donne à mon écran la forme suivante :.

this

Était-ce utile?

La solution

Paramètres dans le menu de débordement

Pour utiliser les paramètres du menu de débordement, vous devez remplacer le onOptionsItemSelected méthode, si ce n’est déjà fait, et gérez l’identifiant correct.

@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);
}

Remplacer R.id.action_settings avec l'identifiant de votre élément de menu.

Affichage du fragment de préférence

Comme vous l'avez montré sur votre image, votre écran de préférences chevauche la mise en page existante.

Notez que vous ne pouvez remplacer qu'un fragment que vous avez ajouté dynamiquement.

Je suppose que le XML de votre écran qui comporte les boutons Devinez le pays et Devinez les drapeaux a été gonflé et n'a pas été ajouté dynamiquement en tant que fragment, donc en ajoutant le fragment de préférence, il serait simplement affiché en chevauchement.

Solution

Une façon de procéder consiste à créer et à démarrer une nouvelle activité qui chargera le fragment de vos préférences.

Par exemple, si vous créez une classe appelée SettingsActivity qui chargera les préférences (N'oubliez pas d'ajouter à AndroidManifest) :

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
    }
}

Puis dans votre onOptionsItemSelected, vous pouvez démarrer l'activité de configuration.

@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);
}

Sinon, vous devrez modifier votre mise en page principale pour utiliser quelque chose comme une mise en page de cadre afin de pouvoir ajouter/supprimer/remplacer des fragments correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top