如何在启动片段时跳过 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
    }
}