I'm in my fragment class calling this:
@OnClick(R.id.blockedLinkLayout)
public void onBlockedClick(){
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, new SettingsBlockedUsersFragment(), FRAGMENT_TAG);
ft.commit();
}
And it just replace my current fragment with chosen one.
And my question is, how can I send some data (e.g. String
value) from my parent fragment to my child fragment using FragmentTransaction?
FragmentTransaction
is simply to transition Fragments, it doesn't "pass" anything. You need to use a Bundle
.
SettingsBlockedUsersFragment frag = new SettingsBlockedUsersFragment();
Bundle b = new Bundle();
// put stuff into bundle...
b.putString("user", "steve");
// Pass the bundle to the Fragment
frag.setArguments(b);
// Use Fragment Transaction
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, frag, FRAGMENT_TAG);
ft.commit();
Then inside the onCreate of the Fragment, you can do
String user = getArguments().getString("user");
Other ways to pass data into a Fragment are discussed at Best practice for instantiating a new Android Fragment
Just pass them in a bundle as fragment arguments
in parent fragment :
SettingsBlockedUsersFragment fragment = new SettingsBlockedUsersFragment();
Bundle arguments = new Bundle();
arguments.putString( string_key , desired_string);
fragment.setArguments(arguments);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, fragment , FRAGMENT_TAG);
ft.commit();
in child fragment :
Bundle arguments = getArguments();
String desired_string = arguments.getString(string_key);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With