I have a fragment that I call like so from my activities onCreate
android.app.FragmentManager fragmentManager = getFragmentManager();
DeviceControlFragment newFragment = new DeviceControlFragment();
newFragment.device = device;
fragmentManager.beginTransaction()
.replace(R.id.content_frame, newFragment)
.commit();
In the fragment I can either pop the back stack or hit back like so:
getFragmentManager().popBackStack();
OR
getActivity().onBackPressed();
But I need something in the activity so that I know we have returned there, is there something similar to onActivityResult
that I can override in the activity to know when the fragment has been 'finished'
Declare a interface inside fragment and implement it in your activity and send response to activity inside onDetach()
,onDestroy
or onPaused
method of fragment, any of them which suits you. I will prefer onDetach
or onDestroy
Here is sample for that:
public class MyFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
private Test mListener;
public interface Test{
void imLeavingYou();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mListener = (Test) context;
}
@Override
public void onDetach() {
super.onDetach();
if(mListener != null){
mListener.imLeavingYou();
}
}
}
And in your Activity
do this:
public class MyActivity extends AppCompatActivity implements MyFragment.Test {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
}
@Override
public void imLeavingYou() {
// Okay thanks for informing
}
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments