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

Manifest报错:MainActivity需继承android.app.Activity,Intent跳转异常

Android Studio中继承AppCompatActivity出现的Manifest与跳转代码报错问题

问题现象

  • Manifest文件里MainActivity和SignIn的名称下方出现红线提示:MainActivity must extend android.app.Activity
  • 应用能在实体手机正常运行,但执行Activity跳转代码时:
    Intent intent = new Intent(MainActivity.this, SignIn.class);startActivity(intent);
    
    startActivity方法报错:Cannot resolve method 'startActivity' in 'MainActivity',同时MainActivity.this和SignIn.class下方也有红线
  • 仅让Activity继承android.app.Activity时一切正常,但业务需要继承AppCompatActivity,之前误以为AppCompatActivity不继承Activity

已尝试的无效方案

  • 使用Stack Overflow提到的view.getContext方案
  • 按照建议清理项目缓存
  • 确认Manifest与Gradle配置无错误
  • Android Studio提示添加suppress: Add tools:ignore="instantiatable" attribute,但未解决根本问题

相关代码

Manifest文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.tbgroup">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.TBGroup"
        tools:targetApi="31">
        <activity
            android:name=".SignIn" <!-- 此处Activity名称下方有报错 -->
            android:exported="false" />
        <activity
            android:name=".MainActivity" <!-- 此处Activity名称下方有报错 -->
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Activity代码

MainActivity.java

package com.example.tbgroup;

import android.content.Intent;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent(MainActivity.this, SignIn.class);
        startActivity(intent);
    }
}

SignIn.java

package com.example.tbgroup;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class SignIn extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);
    }
}

原因分析

AppCompatActivity实际上是间接继承自android.app.Activity的(继承链:AppCompatActivity → FragmentActivity → ComponentActivity → Activity),出现这类报错并非代码逻辑问题,大概率是Android Studio的索引缓存异常,或者AppCompat依赖未正确同步。

解决方法

  1. 检查AppCompat依赖配置
    打开模块级build.gradle文件,确保存在以下依赖(版本号可使用最新稳定版):

    implementation 'androidx.appcompat:appcompat:1.6.1'
    

    同步Gradle后再尝试构建项目。

  2. 彻底清理Android Studio缓存
    点击顶部菜单栏File → Invalidate Caches...,勾选Invalidate and Restart选项,等待IDE重启并重新构建索引。

  3. 重建项目
    先点击工具栏的Sync Project with Gradle Files按钮完成同步,再选择Build → Rebuild Project重新编译整个项目。

  4. 确认导入的AppCompatActivity包正确
    检查两个Activity文件中的导入语句,确保是import androidx.appcompat.app.AppCompatActivity;,而非其他包下的同名类。

  5. 临时忽略Manifest报错(应急方案)
    如果上述方法均无效,可在Manifest的Activity标签中添加tools:ignore="Instantiatable"来消除红线提示,不影响应用运行:

    <activity
        android:name=".MainActivity"
        android:exported="true"
        tools:ignore="Instantiatable">
        <!-- intent-filter内容 -->
    </activity>
    

内容的提问来源于stack exchange,提问作者I don't think so

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:04:51