如何在启动片段时跳过onResume?

时间:2017-10-11 16:45:55

标签: android android-fragments android-lifecycle

基本上我想在OnResume()中放置一些代码,只有当用户从这个片段调用的活动回来但是onResume()内的代码不能在Start

上执行时才会触发

2 个答案:

答案 0 :(得分:3)

您可以使用startActivityForResult开始活动,并在您回来时调用onActivityResult

如果你想要你在onResume中提到的行为,你可以使用布尔标志:

boolean started = false;

@Override
public void onResume() {
    super.onResume();
    if(started) {
        //do your task
    } else {
        started = true;
    }
}

但是onActivityResult是做到这一点的好方法。

答案 1 :(得分:0)

这是一种相当黑客的技术,但它确实有效。

首先在类中声明一个布尔值:

private boolean isInitialized = false;

onResume中,检查值。如果为false,则将其设置为true。如果是,则执行所需的代码(底部的代码示例)。

记住片段生命周期:

onResume是片段启动时的最后一个被调用事件。因此,必须在onResume中调用所有这些才能正确使用(如果在onCreate中将布尔设置为true,则在onResume中始终为真,即使在第一次启动时也是如此)< / p>

基本上,您的onResume方法应如下所示:

public void onResume(){
    super.onResume();
    if(!isInitialized) isInitialized = true;
    else{
        //Your code here
    }
}