Issue
I am trying to achieve Fragment to Activity communication given that the Activity is not the parent Activity.
So, I have a MainActivity
that has a fragment called ContactListFragment
, while the add button on the BottomNavigationView
of MainActivity
is clicked, I am opening another AddContactActivity
to add a contact. My requirement is to when I am clicking the save button on the AddContactActivity
, I need to initiate a data-sync with server in ContactListFragment
. I think the best approach would be to use a Shared View Model for this, but in that Case how should I create the view model so that the lifecycle owner doesn't get changed?
I thought about using the Application Context
as the owner but I feel like its an overkill for a task like this, and it may produce some consequences down the line when other modules are added to the project.
So is there a way to efficiently implement this approach? Thanks.
Solution
Write an interface class with object/objects/Data types you need to sync
interface OnSaveClickListener {
fun onSaveClicked(contact: Contact)
}
Now in ContactListFragment class
class ContactListFragment : Fragment(), OnSaveClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
(activity as AddContactACtivity).mOnSaveClickListener = this
}
override fun onSaveClicked(contact: Contact) {
// Whatever you want to do with the data
}
}
In AddContactActivity,
class AddContactActivity {
var mOnSaveClickListener : OnSaveClickListener? = null
private void whenYouClickSave(contact: Contact){
mOnSaveClickListener?.onSaveClicked(contact)
}
Answered By - Sarah Khan
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.