0

onCreate()とonResume()で実行される2つの異なるメソッドがありますが、onCreate()が実行されたときに、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

4

2 に答える 2

3

onCreate=trueで設定されるモジュールレベルのブール値を作成します。onResumeを実行するときは、falseに設定します。値がfalseの場合にのみ実行する必要があるメソッドを渡した後です。このように、onPauseの後にonResumeを実行すると、onResumeのメソッドが実行されます。

boolean skipMethod = false;

onCreate(){

    skipMethod = true;

}

onResume(){

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

}
于 2012-12-04T11:42:18.783 に答える
1
public class SomeActivity extends Activity{

    bool onCreateCalled = false;

    @Override onCreate()...

       ...
       onCreatedCalled = true;
       ...

    @Override onResume()...

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

しかし、これは醜いです。onResume()は常にonCreate()の後に来るので、この一般的なメソッドをもう一度見て、onResume()からのみ呼び出すことをお勧めします。

于 2012-12-04T11:43:14.427 に答える