Comment passer fragment arguments lors de l'utilisation d'une vue pager avec différents fragments/layouts?

Objectif: Pour utiliser fragment arguments à passer le long de la chaîne de valeur à partir d'une TextView à une nouvelle fragments TextView, MAIS tout en utilisant un ViewPager avec différents layouts/fragments dans le FragmentPagerAdapter.

Problème: Le nouveau fragment ne reçoit jamais les fragments les arguments du fragment précédent.

Mon Set up: j'ai mon Activity d'hébergement de la ViewPager et FragmentPagerAdapter. J'ai annulé FragmentPagerAdapters getItem(int position) méthode pour créer une nouvelle fragment fonction de la position actuelle de la ViewPager. Maintenant je n'ai que deux Fragments dans ma carte, mais allons ajouter plus de après avoir surmonté cet obstacle. Je suis l'aide de la newInstance() technique pour passer le long de la Fragmentarguments, mais rien n'est jamais passé.

Code:

Mon FragmentPagerAdapter code:

//this is a variable that I pass in as the newInstanct() methods parameter,
//I update   this variable from my fragments constantly
public static String fragmentArgumentsValue = "";

mViewPager.setAdapter(new FragmentPagerAdapter(fm) {


            @Override
            public int getCount() {

                return NUMBER_OF_VIEWS;
            }

            @Override
            public Fragment getItem(int position) {
                switch (position) {
                case 0:
                    Log.d(TAG, "---In getPosition(), position 0---");

                    return Frag1
                            .newInstance(fragmentArgumentsValue);

                case 1:
                    Log.d(TAG, "---In getPosition(), position 1---");

                    return frag2
                            .newInstance(fragmentArgumentsValue);

                default:
                    Log.d(TAG, "---In getPosition(), DEFAULT---");

                    return frag1
                            .newInstance(fragmentArgumentsValue);
                }

            }
        });

L'un des fragments de la méthode newInstance ():

public static Fragment newInstance(String fragmentArgumentsValue) {
    Frag1 f = new Frag1();
    Bundle bun = new Bundle();
    bun.putString(KEY_FRAGMENT_ARGUMENTS_STRING, fragmentArgumentsValue);
    f.setArguments(bun);
    return f;
}

Obtenir les fragments arguments:

String argString = getArguments().getString(
        KEY_FRAGMENT_ARGUMENTS_STRING);
if (argString.length() != 0) {
    Log.d(TAG, "Trying to set the frag args to:" + argString);
    mWorkingTextView.setText("" + argString);
} else {
    Log.d(TAG, "Couldn't set frag args to: " + argString);
}

Ce que j'ai Essayé: j'ai essayé de donner le Activity qui héberge le ViewPager et FragmentPagerAdapter un static variable que j'ai constamment mise à jour dans chacun de mes fragments, je comprennent le static variable dans le fragment.newInstance(staticVariableInActivity) méthode, mais cela ne semble pas fonctionner.
J'ai aussi essayé d'utiliser le ViewPager rappel viewPager.setOnPageChangeListener() j'avais remplacé la onPageSelected(int pos) et a essayé de passer le fragment des arguments, néanmoins cela n'a pas fonctionné... donc s'il vous plaît aider moi S. O.!!!

Mes pensées: je n'ai pas les différents fragments et layouts dans un ArrayList ou dans une liste pour cette question, je viens de créer une instance de la Fragments via le newInstance() méthode selon la position de la FragementPagerAdapter, cela pourrait-il être un problème? Dois-je créer un singleton liste des layouts/fragments? Donc, je peux changer les valeurs de la Fragments TextViews via le singleton liste? (excusez-moi si c'est stupide ou pas possible de chose à faire).

Note: je suis d'économie à l'écart de la TextViews valeurs via public void onSaveInstanceState(Bundle outState) pour gérer l'écran de rotations. Cela pourrait-il être un problème?

InformationsquelleAutor Sakiboy | 2013-11-15