1. ホーム
  2. java

[解決済み] "メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない"

2022-02-28 20:07:45

質問

Android Studioを始めたばかりで、サウンドボードを作りたいのですが、このようなエラーが出てしまいます( "Method does not override or implement a method from a supertype" ) のコードを実行すると

public class MainActivity extends AppCompatActivity
{

    Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) { ... }        

    Button bt1;
    @Override
    protected void onCreate2(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt1 = (Button) findViewById(R.id.asta_e);
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.sample);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.start();
            }
        });
    }

    ...
}

解決方法は?

答えはいたってシンプルで @Override タグ は、あるメソッドがスーパークラスのメソッドをオーバーライドしているかどうかを、コンパイル時にチェックする機能を追加します。

また onCreate2() というメソッドが Android の Activity クラスにあります(ここでは AppCompatActivity のように、オーバーライドすることはできません。

を削除する必要があります。 @Override タグを使用すると、コードをコンパイルすることができます。 onCreate2() は決して実行されません。これについては Android アクティビティライフサイクル . OnCreate() はアクティビティの作成時に呼び出され、その時点でメソッドにあるコードが実行されます。

クラスに適当なメソッドを入れて、それが実行されると考えることはできません。それらはどこかから呼び出されなければなりません、あなたの場合 onCreate() はそのスーパークラスから呼び出されますが onCreate2() は決して呼び出されることはなく、コンパイルもできません。 いけない @Override タグを使用します。