I solved this problem using interface / callbacks.
In my MainActivity I am writing a callback interface:
private SearchRequestedCallback mSearchRequestedCallback; public void setSearchRequestedCallback(SearchRequestedCallback callback) { mSearchRequestedCallback = callback; } public interface SearchRequestedCallback { void onSearchRequested(); }
In my Fragment , I set the callback to onStart() and disabled it in onStop() :
@Override public void onStart() { super.onStart(); getActivity().setTitle(getResources().getString(R.string.app_name)); ((MainActivity)getActivity()).setSearchRequestedCallback(new SearchRequestedCallback() { @Override public void onSearchRequested() { addFilter(); } }); } @Override public void onStop() { ((MainActivity)getActivity()).setSearchRequestedCallback(null); super.onStop(); }
source share