web-dev-qa-db-ja.com

AndroidのviewDidLoadとviewDidAppearの同等物

AndroidにはCocoaのviewDidLoad関数とviewDidAppear関数に相当するものがありますか?

そうでない場合、ビューが表示されたときにアクションを実行するにはどうすればよいですか?私のアプリはタブ付きアプリケーションであり、タブの1つがフォーラムトピックのリストです。ビューが表示されるたびにトピックリストを更新したいのですが。そのようなことはAndroidで可能ですか?

31
Code Slinger

Activityクラスには、viewDidLoadおよびviewDidAppearに非常に類似したonCreateメソッドとonResumeメソッドがあります。

Activity.onResume

[〜#〜]編集[〜#〜]

これに加えて、これらのコールバック中にビューツリーがまだ完全に利用可能ではないとコメントで言及されているため、ビュー階層への最初のアクセスが必要な場合にリッスンできるViewTreeObserverがあります。これは、ViewTreeObserverを使用してこれを実現する方法のサンプルです。

    View someView = findViewById(R.id.someView);
    final ViewTreeObserver obs = someView.getViewTreeObserver();
    obs.addOnPreDrawListener(new OnPreDrawListener() {

        public boolean onPreDraw() {
            obs.removeOnPreDrawListener(this);
            doMyCustomLogic();
            return true;
        }
    });
21
Rich

onResume()はviewCouldAppearに似ています。 :) public void onWindowFocusChanged(boolean)はviewDidAppearに最も近いです。アクティビティライフサイクル内のこの時点で、そのサイズについてビューに尋ねることができます。

14

私のAndroidに関する限られた初期の理解から、 onCreate メソッドにviewDidLoadタイプの機能を実装します。 アクティビティ

onCreate(Bundle)は、アクティビティを初期化する場所です。最も重要なことは、ここでは通常、UIを定義するレイアウトリソースを使用してsetContentView(int)を呼び出し、findViewById(int)を使用して、プログラムで操作する必要のあるUI内のウィジェットを取得します。

viewDidAppearに相当するものは、 onResume メソッドに近いです。

OnRestoreInstanceState(Bundle)、onRestart()、またはonPause()の後に呼び出され、アクティビティがユーザーとの対話を開始します。これは、アニメーションを開始したり、専用アクセスデバイス(カメラなど)を開いたりするのに適した場所です。

4
RedBlueThing