I have a main fragment that contains a viewpager. This viewpager gets the same secondary fragment (different from the main one) but with different parameters every time. Inside the said secondary fragment that is inside the viewpager, i have a recyclerview. Inside these recyclerviews are some fields that the user fills up. When the main fragment (the one that holds the viewpager) is closed (via a button click) i need to get the data from each recyclerview. How do i to that?
The best way to solve this problem is that implement interface which will give call back to activity holding these fragment and then from Activity pass it to fragment(main) and then use viewpager to get Fragment(secondry) and pass data.
Steps one would be implent interface which will give callback to activity and the get fragment from viewpager(Link for same)
Related
suppose i have an app that has a tool bar and a fragment container in the main activity, the fragment container in this situation is displaying a fragment that has a recyclerview which has a list of objects retrieved from a basic room database, and the toolbar has a button that clears out all the data stored in the database (which means the code that responsible for this is located in the main activity not in the fragment), how should i go about notifying the adapter inside the fragment that the object list has been updated?
i don't think any code is necessary here as it's more of a general question, but i will gladly share all the code necessary if its needed.
You can make the adapter a public static variable and call notifyDataSetChanged from the main activity
I have an activity that contains several edit texts and a view pager
And inside the view pager there are some text edits
Now, I want when the user fills the form inside the activity and the form inside the fragment, all the information will be transferred to the server by prenter image description hereessing one button.
The problem is that the button is in the main activity and I don't have access to edit the texts inside the fragment
What should I do ???
As your Activity is in control of the Fragment, you could just implement a custom method inside the Fragment like fun getFormInput(): Map<String, String> or similar.
When the "send" button is clicked, you use that method to receive all information from the Fragment.
Alternatively, you could implement a custom listener, with the observer pattern, to be notified inside the Activity on every change of a form field in the Fragment.
You can add an interface that will return you the map object as mentioned above.
Create a method in the interface that returns the data stored in all the dit texts in any Data Structure that best fits your use case.
In your fragment - add a watcher to all your edit texts and send the values present in the edittexts to the activity using the method in the interface.
i am using a tabHost for 4 fragments in this fragments i am calling custom adapters for each fragment when i move from one fragment to another fragment my list view is reloading freshly i dont want to refresh my listview from moving one fragment to another
Help me guys
Make your data object the member of your activity that is initializing the fragments.
Check this out. I would recommend using a ViewPager with a tabbed indicator, or a set of custom buttons linked to the pager. I've implemented this solution in several apps where each fragment contains heavy content, and the performance was great. Create all your fragments, and setup the pager on each change, this way the content of your "tabs" will stay the same on user switching.
Basically I am trying to create an app that passes data filled in an EditText on on one fragment, into a TextView on another fragment on a button click(The buttons is in the first fragment with the EditText). I use the SlidingTabLayout. I have 2 java classes that both extend Fragment and both inflate separate xml layouts(in the onCreateView). I have a java MainActivty with a public class"SectionsPagerAdapter that extends FragmentPagerAdapter, which depending on the swipe of the user displays 1 of the 2 Fragment classes. I am really confused on how I can send data between the 2 fragment sot that from the EditText in 1 fragment can get sent to the TextView in the other fragment on a button click. Could the suggested solutions be explained as simple as possible because I am relatively new to Android Studio. Many thanks in advance.
As per my understanding, basically you want to pass data between two fragments.
You can use activity for that from where fragments are initialized.
you can do this.
in MainActivity.java:
have a function setData(Object obj) and getData() which returns that object.
From fragment:
You can call those function of activity to save your data and get your data.
Here's way:
MainActivity activity = (MainActivity) getActivity();
Object obj = activity.getData();
activity.setData(obj);
I hope it helps.
I read quite some articles about fragments, but I am still confused about how to do what.
I have a MainActivity, which displays two fragments side by side. In one of the fragments I have a button and defined in the fragments layout XML for the button
android:onClick="buttonClicked"
Now I want to implement that method
public void buttonClicked(View view)
I would have assumed that this has to be implemented in FragmentA.java and not in MainActivity.java. But it only works if that method is implemented in MainActivity.java. Why is that? To me that doesn't make sense. Pre Honeycomb a method belonging to one activity stayed in that activity, now on a tablet I am merging many activities to one MainActivity and all the different methods are merged? Whatever do you put for example in FragmentA.java then? What if you have to start you an own activity because this app runs on a handheld, then the onClick method has not to be in the MainActivity but in the Activity which needs to be called then. I am pretty confused at the moment...
I'm not sure what the specific problem is, but maybe this will help.
From the Android documentation on Fragments:
You should design each fragment as a modular and reusable activity component. That is, because each fragment defines its own layout and its own behavior with its own lifecycle callbacks, you can include one fragment in multiple activities, so you should design for reuse and avoid directly manipulating one fragment from another fragment.
That is, you should never manipulate a fragment from another fragment; rather, this should be done through the underlying Activity. Read the "Creating event callbacks to the activity" section in this article for more information (it's important stuff!!).
On the other hand, if you want the button to perform an action within the Fragment itself (i.e. if you wanted a Button click to change the text of a TextView within the Fragment), you should implement this in the Fragment, not the Activity (this is because the resulting behavior is contained within the Fragment and has nothing to do with the parent Activity).
Leave a comment and I can clarify if my post is confusing... I only recently began to understand Fragment's myself :).
Well,
I guess it is related to hierarchy of android context structure.
Activity is host of all child views and hence you can say fragment is actually using its host's context.And that's why when you use onClick with fragment system always searches it in Host activity of fragment.
Check it on.
Android developer onClick attribute description
I haven't checked one thing but you could put a test.
By providing implementation in host activity rather than in fragment,but use onClick on layout file of fragment.It should call parent's method.