web-dev-qa-db-fra.com

Comment passer des données d'un fragment à un dialogFragment

Je sais que cela a déjà été demandé, mais je ne comprends pas très bien comment le mettre en œuvre. J'ai un fragment "myFragment" dans lequel je crée un objet d'un "myDialogueFragment". Je souhaite transmettez une valeur à myDialogueFragment lorsque je l'invoque à partir de myFragment. J'ai un nombre entier que je veux transmettre à myDialogueFragment et le stocker dans une base de données locale avec d'autres informations provenant de myDialogueFragment.

Je me trompe peut-être, mais tout le code que j'ai vu concerne l'envoi des données du myDialogueFragment au myFragment, ce qui n'est pas ce que je veux vraiment.

static MyDialogFragment newInstance(int num) {

MyDialogFragment f = new MyDialogFragment();

// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);

return f;
}  

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mNum = getArguments().getInt("num");
    ...
}

Ainsi, ce code récupère les arguments de la méthode myFragment onCreate (). Je veux envoyer les arguments dans myFragment () et les recevoir dans myDialogueFragment.

Comment puis-je y arriver?

18
phedon rousou

Ce dont vous avez besoin est de définir les arguments sur le fragment comme suit:

Bundle args = new Bundle();
args.putString("key", "value");
DialogFragment newFragment = new YourDialogFragment();  
newFragment.setArguments(args);
newFragment.show(getSupportFragmentManager(), "TAG");

Tout ce que vous avez à faire maintenant, c'est attraper ces arguments dans votre fragment et les utiliser ...

ET DANS LE FRAGMENT DE DIALOGUE, VOUS LE LIRE COMME CECI ...

Bundle mArgs = getArguments();
String myValue = mArgs.getString("keyUsed to send it...");
43
Martin Cazares

J'appelle un FragmentDialog à l'intérieur d'un fichier calss qui a expiré pour ActivityFragment 

//TODO 1
                Followers clickedObj = (Followers) 

                parent.getItemAtPosition(position);
                Bundle bundle = new Bundle();
                bundle.putString("name", clickedObj.getFollow_name());
                bundle.putString("nick", clickedObj.getFollow_nickname());
                bundle.putString("score", clickedObj.getFollow_score());
                bundle.putString("title", clickedObj.getFollow_title());
                FragmentManager fragmentManager = getSupportFragmentManager();
                UserPopUp userPopUp = new UserPopUp();
                //TODO 1
                userPopUp.setArguments(bundle);
                userPopUp.show(fragmentManager, "followers");

et je l'ai appelé sur onActivityCreated dans ma classe qui s'étendait à DialogFragment 

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        //Bundle Data Cekme başlangıç
        Bundle mArgs = getArguments();
        String userName = mArgs.getString("name");
        String userNickName = mArgs.getString("nick");
        String userTitle = mArgs.getString("title");
        String userScore = mArgs.getString("score");
        user_name.setText(userName);
        nick_name.setText(userNickName);
        challenge_title.setText(userTitle);
        user_score.setText(userScore);
        // bitiş

    }

fonctionne très bien

0
Sam