I only have found information about how to create a Fragment sending some data to it, but only in its instantiation with the constructor.
But I want to know if it is possible to send some data (for instance, two Double objects) to a Fragment from an Activity without having to create a new instance of the Fragment.
A Fragment that has been previously created.
The easiest way to do this is to define an interface in the Fragment and implement it within the activity. This link should provide a detailed example on how this can be accomplished. https://developer.android.com/training/basics/fragments/communicating.html
I think the key part you are looking for is here:
ArticleFragment articleFrag = (ArticleFragment)
getSupportFragmentManager().findFragmentById(R.id.article_fragment);
if (articleFrag != null) {
// If article frag is available, we're in two-pane layout...
// Call a method in the ArticleFragment to update its content
articleFrag.updateArticleView(position);
} else {
// Otherwise, we're in the one-pane layout and must swap frags...
// Create fragment and give it an argument for the selected article
ArticleFragment newFragment = new ArticleFragment();
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
}
First try to retrieve the fragment by calling findFragmentById(R.id.fragment_id), and if it is not null you can make a call to the method you defined in your interface to send some data to it.
You can transfer any data through a bundle like below :
Bundle bundle = new Bundle();
bundle.putInt(key, value);
your_fragment.setArguments(bundle);
Then in your Fragment, retrieve the data (eg in onCreate() method) with:
Bundle bundle = this.getArguments();
if (bundle != null) {
int myInt = bundle.getInt(key, defaultValue);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.