I'm dealing with .setVisibility() of a view, inside my main fragment at app start. So what I want is that the view is invisible on app start (for this i set INVISIBLE inside onCreateView) and to be visible when I come back to my fragment from other activities while the app is open (and for this I tried to use onRestart() to set view VISIBLE but it cannot resolve onRestart method) is onRestart deprecated or? thanks
EDIT: for all the answers below suggesting to use an onResume (and whom gave a -1), onResume doesn't work as onRestart at all, cause is being called right after onCreateView.
Fragments don't have onRestart()
. It's only for Activities.
See the lifecycle of fragments below
I suppose you're looking for onResume()
instead
Use a boolean flag to check whether or not you're returning to the Fragment:
private boolean firstVisit;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//other stuff
firstVisit = true;
}
@Override
public void onResume() {
//other stuff
if (firstVisit) {
//do stuff for first visit only
firstVisit = false;
}
}
You can use either onStart()
or onResume()
if you want to load things when returning to the fragment.
You can use onRestart()
on the activity, making it call whatever method you want on the fragment by making use of getFragmentManager().findFragmentById(R.id.your_fragment)
.
When a fragment gets restarted its underlying activity got restarted so its onRestart()
method was called.
You need to use the onResume()
callback method, if you would like to detect when the fragment is visible again
Fragment life cycle doesn't have onRestart()
method. You could use onPause()
and onResume()
as per your requirement.
Further reading : Fragments
来源:https://stackoverflow.com/questions/35039512/android-what-to-use-instead-of-onrestart-in-a-fragment