问题
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.
回答1:
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;
}
}
回答2:
You can use either onStart()
or onResume()
if you want to load things when returning to the fragment.
回答3:
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.
回答4:
You need to use the onResume()
callback method, if you would like to detect when the fragment is visible again
回答5:
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