Android Studio页面切换报错:‘not an enclosing class:MainActivity’求助
解决Android页面切换报错“not an enclosing class:MainActivity”
错误原因
你在Page2类的点击事件里使用MainActivity.this是错误的——MainActivity.this仅能在MainActivity的内部类中用来引用外部的MainActivity实例,而Page2是独立的Activity类,和MainActivity没有嵌套关系,因此编译器会抛出“not an enclosing class:MainActivity”错误。
修复方案
Intent构造方法的第一个参数需要传入当前上下文对象,你可以用以下几种正确方式替换错误代码:
- 使用当前Activity实例:
Page2.this(推荐,明确指向当前Activity实例,适配页面跳转场景) - 使用全局应用上下文:
getApplicationContext() - 通过点击事件的View获取上下文:
view.getContext()
修正后的完整代码
package com.example.multipage; import android.app.Activity; import android.content.Intent; import android.os.Bundle ; import android.view.View; import android.widget.Button; import androidx.annotation.Nullable; public class Page2 extends Activity { Button btn; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.newpage); btn = (Button) findViewById(R.id.btnl); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 替换为正确的上下文引用 Intent intentMain2Activity = new Intent(Page2.this, MainActivity.class); startActivity(intentMain2Activity); } }); } }
内容的提问来源于stack exchange,提问作者Kriesh T
相关产品推荐
相关产品推荐

