Paranoid Android
Paranoid Android

Reputation: 5037

How can I pass data from activity to the dialogFragment that activity invoked?

In my application I have a form the user fills in. Pressing "save" the data will be saved to the local database. I want to add a confirm dialog for the user to review the details he entered before moving on, since those details are crucial.

In my dialogFragment instance, I would have something like: "You are entering these details: A,B,C... do you confirm?"

A,B,C are the values of my EditText fields in the activity which calls the dialogFragment

How can I access those values from the dialogFragment? I am using:

new ConfirmSaveProjectDetails().show(getFragmentManager(),"Confirm");

in my activity. ConfirmSaveProjectDetails is my dialogFragment class.

I am not using an Intent, otherwise I would send a Bundle...

Any suggestion?

Upvotes: 16

Views: 19166

Answers (3)

Arpit Patel
Arpit Patel

Reputation: 8047

In your Activity

ImageViewDialogFragment dialogFragment = new ImageViewDialogFragment ();
                        Bundle bundle = new Bundle();
                        bundle.putString("link",moviesList.get(position).getImage());
                        dialogFragment.setArguments(bundle);
                        dialogFragment.show((GalleryReviewActivity.this).getSupportFragmentManager(),"Image Dialog");

in your DialogFragment

 Bundle bundle = getArguments();
 String imageLink = bundle.getString("link","");

Upvotes: 1

Barak
Barak

Reputation: 16393

Perhaps not the most pretty/elegant method, but you could make those bits of information public static and then reference them from the dialog.

In the activity/fragment where you gather the data:

public static String A
public static String B
public static String C

And grab it in the dialog fragment like so (apologies if I'm explaining something you already know):

your_activity/fragment_classname.A
your_activity/fragment_classname.B
your_activity/fragment_classname.C

Upvotes: 1

PJL
PJL

Reputation: 18794

You can add arguments in the form of a bundle into the Fragment and then retrieve them from the fragment. Use the following methods available on a Fragment:

setArguments and getArguments.

Passing them as arguments to the Fragments constructor is always an option too.

Upvotes: 30

Related Questions