1. ホーム
  2. Android

Androidでコンストラクタのインテントを解決できない原因と解決策

2022-02-10 02:15:31
<パス

原文のまま http://www.dabu.info/android-cannot-resolve-constructor-intent.html

今日、コードを書いていたら、Android Studio で次のようなエラーが発生しました "Android can not resolve constructor intent"。

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button_1);
        assert button ! = null;
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent startIntent = new Intent(MainActivity.this, MyService.class);
                startService(startIntent); // start the service
            }
        });
    }
}

理由
Intent の使用方法とパラメータは以下の通りである。
Intent(Context コンテキスト , Class クラス)
このように、コード1では、パラメータを設定しているのに、なぜエラーが報告されるのでしょうか?

これはインナークラス(リスナークラスは匿名インナークラス、特殊なインナークラス)のIntent文であり、これでMyActivityを参照しようとしてもできないためで、この間違った使い方は、次のように等価です。
Intent( OnClickListener Listener , クラス class )
最初のパラメータはContextクラスではなく、OnClickListenerクラスなので、間違っています。

報告されたエラーを修正し、Myactivity を正しく参照するには、以下を設定する必要があります。
Intent intent = new Intent(this , SecondActivity.class);
に変更します。
Intent intent = new Intent( MyActivity.this , SecondActivity.class)です。