If I'm inside a Fragment how can I call a parent's activity?
Simply call your parent activity using getActivity() method.
Best way of calling Activity from Fragment class is that make interface in Fragment and add onItemClick() method in that interface. Now implement it to your first activity and call second activity from there.
Bookmark this question. Show activity on this post. I see in the Android Fragments Dev Guide that an "activity can call methods in a fragment by acquiring a reference to the Fragment from FragmentManager, using findFragmentById() or findFragmentByTag() ."
This example demonstrates how to call an activity method from a fragment in an Android App using Kotlin. Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project. Step 2 − Add the following code to res/layout/activity_main. xml.
Yes, Its right by calling getActivity and cast it with parent activity to access its methods or variables ((ParentActivityName)getActivity())
Try this one.
ParentActivityName
is parent class name
2021 UPDATE
As it's told in the comments, Fragment#onAttach(Activity)
is deprecated starting from API 23. Instead:
@Override public void onAttach(Context ctx) { super.onAttach(ctx); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { // Only attach if the caller context is actually an Activity if (ctx instanceof Activity) { mCallback = (OnHeadlineSelectedListener) ctx; } } catch (ClassCastException e) { throw new ClassCastException(ctx.toString() + " must implement OnHeadlineSelectedListener"); } }
ORIGINAL ANSWER
The most proper way is to make your Activity
implement an Interface
and use listeners. That way the Fragment
isn't tied to any specific Activity
keeping it reusable. Into the Fragment
:
@Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { mCallback = (OnHeadlineSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } }
That way, you make the Activity
listen to the fragment when it's attached to it.
See also:
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