You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:09:25