Afficher les paramètres en utilisant « Paramètres » dans le menu à trois points
-
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 :
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 :.
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.