2017-10-11 47 views

回答

2

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

如果你想你的onResume反正提到的行为,您可以使用布尔标志:

boolean started = false; 

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

onActivityResult是做到这一点的好办法。

+0

对于startActivityForResult,它似乎我必须从父活动,然后哪个片段得到回报。我可以从碎片做到吗? – ishandutta2007

+1

@ ishandutta2007你也可以从片段中完成 –

0

这是一个相当黑客技巧,但它的工作原理。

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

private boolean isInitialized = false; 

onResume,你检查的值。如果它为假,则将其设置为true。如果它是真的,你执行你想要的代码(代码示例在底部)。

记住片段生命周期:

onResume是最后一个被称为事件开始时的片段。因此,所有这些都被称为在onResume要正确使用(如果布尔设置为true中的onCreate它总是在onResume真实,甚至在第一次发射)

所以基本上,你onResume方法应该看起来像这个:

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