1. ホーム
  2. android

[解決済み] super.onCreate(savedInstanceState)を実行します。

2022-02-07 22:35:13

質問

Android Application Project を作成し、MainActivity.java で > onCreate() を呼び出しています。 super.onCreate(savedInstanceState) .

初心者のため、どなたか上記の行の目的を説明していただけませんか?

どのように解決するのですか?

あなたが作るActivityはすべて、一連のメソッド呼び出しによって開始されます。 onCreate() はその最初の呼び出しです。

アクティビティはすべて android.app.Activity のサブクラスを直接、または別のサブクラスを作成し、そのサブクラスを使用しています。 Activity .

Javaでは、あるクラスを継承した場合、そのクラスのメソッドをオーバーライドして、その中で自分のコードを実行することができます。非常に一般的な例として、オーバーライドすることで toString() メソッドを拡張する際に java.lang.Object .

メソッドをオーバーライドする場合、クラスのメソッドを完全に置き換えるか、既存の親クラスのメソッドを拡張するかという選択肢があります。メソッドをオーバーライドするには super.onCreate(savedInstanceState); を実行するように Dalvik VM に指示します。 に加えて を、親クラスの onCreate() にある既存のコードに追加します。もし、この行を省くと あなたのコードだけ が実行されます。既存のコードは完全に無視されます。

しかし、このスーパーコールをメソッドに含める必要があります。なぜなら、そうしないと onCreate() のコードは Activity が実行されることはなく、アプリはActivityに割り当てられたContextがないなど、さまざまな問題に直面することになります。 SuperNotCalledException を使用すると、コンテキストがないことを理解するチャンスがあります)。

要するに、Android自身のクラスは信じられないほど複雑になり得るのです。フレームワーククラスのコードは、UI の描画、ハウスクリーニング、Activity とアプリケーションのライフサイクルの維持といったことを処理します。 super の呼び出しによって、開発者はこの複雑なコードを舞台裏で実行しながら、独自のアプリのために優れた抽象化レベルを提供することができます。