如何在启动片段时跳过 onResume?
How can I skip onResume while starting of an Fragment?
基本上我想在 OnResume() 中放置一些代码,只有当用户从从该片段调用的 activity 中按回时才会触发,但 onResume() 中的代码不应执行开始时
可以用startActivityForResult
启动activity,回来时会调用onActivityResult
如果你想要你在 onResume
中提到的行为,你可以使用布尔标志:
boolean started = false;
@Override
public void onResume() {
super.onResume();
if(started) {
//do your task
} else {
started = true;
}
}
但是 onActivityResult
是这样做的好方法。
这是一种相当骇人听闻的技术,但它确实有效。
首先在 class:
中声明一个布尔值
private boolean isInitialized = false;
在 onResume
中,您检查值。如果为假,则将其设置为真。如果为真,则执行所需的代码(底部的代码示例)。
记住片段生命周期:
(来源:xamarin.com)
onResume
是片段启动时最后调用的事件。所以所有这些都必须在 onResume
中调用才能正确使用(如果布尔值在 onCreate 中设置为 true
它在 onResume
中始终为真,即使在第一次启动时也是如此)
基本上,您的 onResume
方法应该如下所示:
public void onResume(){
super.onResume();
if(!isInitialized) isInitialized = true;
else{
//Your code here
}
}
基本上我想在 OnResume() 中放置一些代码,只有当用户从从该片段调用的 activity 中按回时才会触发,但 onResume() 中的代码不应执行开始时
可以用startActivityForResult
启动activity,回来时会调用onActivityResult
如果你想要你在 onResume
中提到的行为,你可以使用布尔标志:
boolean started = false;
@Override
public void onResume() {
super.onResume();
if(started) {
//do your task
} else {
started = true;
}
}
但是 onActivityResult
是这样做的好方法。
这是一种相当骇人听闻的技术,但它确实有效。
首先在 class:
中声明一个布尔值private boolean isInitialized = false;
在 onResume
中,您检查值。如果为假,则将其设置为真。如果为真,则执行所需的代码(底部的代码示例)。
记住片段生命周期:
(来源:xamarin.com)
onResume
是片段启动时最后调用的事件。所以所有这些都必须在 onResume
中调用才能正确使用(如果布尔值在 onCreate 中设置为 true
它在 onResume
中始终为真,即使在第一次启动时也是如此)
基本上,您的 onResume
方法应该如下所示:
public void onResume(){
super.onResume();
if(!isInitialized) isInitialized = true;
else{
//Your code here
}
}