Android fragments - findFragmentByTag renvoie toujours null
J'ai eu un coup d'oeil autour et a trouvé un couple de questions avec un sujet similaire, mais rien de ce qui a aidé dans mon cas.
Je suis en train d'essayer d'accéder à un actif existant fragment à l'aide de getSupportFragmentManager().findFragmentByTag(TAG), mais il renvoie toujours null. Réponses sur des questions similaires ont suggéré qu'il faut du temps pour les engager à être exécuté, afin de l'appelant findFragmentByTag serait de retourner la valeur null si l'appelé trop tôt. J'ai essayé deux choses:
- ajouter getSupportFragmentManager().executePendingTransactions()
immédiatement après la livraison, mais encore obtenir null. - ajout d'un bouton... en appuyant sur cela, après que l'activité a été créé,
le fragment enregistré et l'affichage de la vue devrait quitter le
système de suffisamment de temps pour s'engager. Mais j'ai toujours null.
Voici mon activité:
public class MainActivity extends ActionBarActivity {
private static final String F_SETTINGS = "f_settings";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
debug();
}
});
if (savedInstanceState == null) {
FSettings newFragment = new FSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, newFragment);
ft.addToBackStack(F_SETTINGS);
ft.commit();
//getSupportFragmentManager().executePendingTransactions();
////Activating this did not make any difference...
}
debug();
}
private void debug() {
String txt = "null";
Fragment frag = getSupportFragmentManager().findFragmentByTag(F_SETTINGS);
if (frag != null) {
txt = frag.toString();
}
Log.i("Testing", txt);
}
}
Ce que je fais mal?
Cheers,
Max
êtes-vous sûr savedInstanceState est nulle ?
ft.addToBackStack(F_SETTINGS); <--- ce n'est pas les tags de vos morceaux.
ft.addToBackStack(F_SETTINGS); <--- ce n'est pas les tags de vos morceaux.
OriginalL'auteur maxdownunder | 2013-08-20
Vous devez vous connecter pour publier un commentaire.
Dans votre code, vous n'avez pas mentionné la balise en remplacement de la méthode, Donc,
L'utilisation de cette structure de remplacement de la méthode de fragment
Consulter ce lien pour plus d'informations. fragment de remplacer par le nom de la balise
Veuillez voir mes question: stackoverflow.com/questions/24833912/...
OriginalL'auteur Pravin