2012-12-04 83 views
0

我有兩個在onCreate()和onResume()上執行的不同方法,但我希望執行onCreate()時,onResume中的方法不會運行。有辦法做到這一點?如何在第二個onResume之後執行一個方法?

- 編輯 -

我刪除從的onCreate()中的一段代碼,並建立了一個標誌,以與的onPause(交互),並通過布爾標誌作爲PARAMS:

Boolean flagFirstTime = true; 

@Override 
    public void onResume() 
    { 
     super.onResume(); 
     new asyncTask().execute(flagFirstTime); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     flagFirstTime = false; 
    } 

之前我問,我在想着放一面旗幟,但在我看來,這很醜陋。 XD

+0

你試過在onPostResume()中執行這個方法嗎? – Opiatefuchs

回答

3

創建在onCreate = true中設置的模塊級布爾值。當onResume執行時,將其設置爲false - 在傳遞只應在值爲false時才運行的方法。這樣,當onResume在onPause之後執行時,onResume中的方法將運行。

boolean skipMethod = false; 

onCreate(){ 

    skipMethod = true; 

} 

onResume(){ 

    if(!skipMethod){ 
     myMethoed(); 
    } 
    skipMethod = false; 

} 
+0

是的同意,最簡單。 –

+0

很好的解決方案。 +1 – MillyMonster

1
public class SomeActivity extends Activity{ 

    bool onCreateCalled = false; 

    @Override onCreate()... 

     ... 
     onCreatedCalled = true; 
     ... 

    @Override onResume()... 

     ... 
     if !onCreatedCalled){doSomething();} 
     ... 

然而,這是醜陋的。我建議你再看看這個常用的方法,只能從onResume()調用它,因爲onResume()總是在onCreate()之後。

相關問題