PreferenceFragment est montré de manière transparente
J'essaie de montrer un PreferenceFragment
après j'sélectionnez l'option Préférences dans ma ActionBar.
Cependant, après remplacement de l'actuel contenu avec la PreferenceFragment
vous pouvez voir l'ancien contenu en dessous. Comme vous pouvez le voir à travers les préférences.
Suis-je manqué quelque chose? J'ai utilisé un exemple tiré d'un livre que je possède, ce qui ne l'utilisez pas les fichiers de mise en page pour les préférences. Avez-vous besoin?
Utilisé code:
Actionbar menu
private boolean MenuChoice(MenuItem item) {
switch (item.getItemId()) {
case 0:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
ReaderPreferences prefs = new ReaderPreferences();
fragmentTransaction.replace(android.R.id.content, prefs);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
return true;
}
return false;
}
PreferenceReader
public class ReaderPreferences extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//--load the preferences from an XML file---
addPreferencesFromResource(R.xml.preference);
}
}
Résultat réel:
Comme vous pouvez le voir, vous regardez directement par le biais de mes préférences.
Qu'ai-je fait de mal?
- J'ai le même problème. Il n'y a pas de solution pour le faire fonctionner avec PreferenceFragments au lieu de PreferenceActivity?
Vous devez vous connecter pour publier un commentaire.
Créer votre PreferenceFragment.java classe comme ceci:
le truc, c'est:
EDIT:
Édité comme suggéré par JDenais, même si elle n'est pas strictement nécessaire pour le sujet.
onActivityCreated(savedInstanceState)
àonResume()
etgetView
àgetListView
.J'ai eu le même problème et résolu //sans avoir à démarrer une nouvelle activité//. Cette méthode a l'avantage de votre activité principale n'est pas aller par le biais d'une pause-reprendre le cycle. La clé est d'avoir votre INTERFACE principale comme un fragment, et puis le cacher lors de la Pref fragment est appelé. Le principal fragment peut être inclus de manière statique ou dynamique.
La
main_layout.xml
ressemble:Le meilleur et le plus portable solution est répondu ici
Qui est:
Dans votre ReaderPreferences la mise en œuvre d'ajouter:
Utiliser un layout vide pour votre activité comme ceci:
activity_settings.xml
puis dans l'activité de onCreate:
La couleur d'arrière-plan peut être défini pour le Fragment Vue dans onStart().
Comme ci-dessous:
Cela fonctionne pour moi sur tous mes périphériques de test.
Accepté la réponse n'est pas la réponse à la question de membres ici. En fait, c'est une solution qui crée une activité conteneur pour la préférence fragment.
Ajouter ceci dans votre Fragment qui s'étend PreferenceFragment:
Finalement, il fixe avec un très facile à corriger.
J'ai tout simplement appelé le
PreferenceFragment
dans une nouvelleIntent
, et il a parfaitement fonctionné.Pour quelqu'un avec le même problème:
Prefs.java
Dans mon écran principal en appuyant sur un bouton:
C'est tout. Après le réglage des préférences, appuyez simplement sur le bouton de retour et vous avez terminé.
J'ai aussi été coincé avec exactement le même problème, et après avoir essayé un couple de choses que j'ai trouvé que c'était la même chose car dans mon cas, j'avais mélangé les deux versions différentes de Fragments et FragmentManagers.
Le onCreate de mon MainActivity ressemblait à ceci:
Cependant lorsque j'ai voulu remplacer ce MainFragment avec mon propre PreferenceFragment, j'ai essayé d'utiliser quelque chose de similaire à ce que vous avez utilisé:
La façon dont je le comprends, c'est que, vous devez utiliser le même type de FragmentManager pour remplacer le travail, donc j'ai juste eu à aller de l'avant et faire les changements appropriés à la façon dont j'ai câblé la MainFragment pour la faire ressembler à ceci:
Bien sûr, j'ai eu de refactoriser MainFragment d'étendre à partir de
android.app.Fragment
au lieu deandroid.support.v4.app.Fragment
J'ai essayé Shayan_Aryan de la solution, mais mon application était en train de mourir avec l'erreur:
J'ai donc dû créer un LinearLayout avec aucun texte dans le vide de cas.
Eh bien, je suppose qu'il y a une solution plus élégante, mais c'est la seule qui a fonctionné pour moi.
j'ai utilisé plusieurs techniques, mais pas de gain
Enfin je l'ai corrigé en ajoutant un fond d'un récipient ou le fragment de mise en page comme ceci
vous avez juste besoin de les ajouter dans votre Mise en page ou le conteneur vue de vous Fragment
J'espère que ça aidera