Android Studio | 继承extends | AppCompatActivity和Activity的区别

本文详细解析了在Android开发中,MainActivity继承Activity与AppCompatActivity的区别。主要区别在于AppCompatActivity提供了更多的功能和兼容性支持,如ActionBar的支持,使应用在不同版本的Android系统上表现一致。同时,文章指出AppCompatActivity会显示项目标签,该标签源自AndroidManifest.xml中的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们开发MainActivity多继承的是Activity。但在Android Studio开发中默认的继承的都是AppCompatActivity 区别如下

MainActivity继承的是Activity

1

MainActivity继承的是AppCompatActivity

2
看到两者的区别了吧。差了明显的一个Label也就是项目的标签。标签的文字来源于AndroidManifest.xml中application中的android:label 如果继承的是Activity那这个标签的内容不会显示出来

转载
MainActivity中extends的AppCompatActivity和Activity有什么区别_温隽_新浪博客
http://blog.sina.com.cn/s/blog_53a99cf30102xlc9.html

<think>我们正在回答用户关于在AndroidStudio中新建Activity的问题。根据引用内容,我们可以总结出两种主要方法:手动创建通过AndroidStudio的快捷方式创建。下面我们将详细说明这两种方法。###方法一:手动创建Activity(分步操作)1.**创建Java/Kotlin类文件**-在项目的`java`目录下,右键点击包名->`New`->`JavaClass`(或`KotlinFile/Class`)-输入类名(例如`MyActivity`),然后按回车创建。2.**让该类继承`AppCompatActivity`**-打开创建的类文件,修改类定义,使其继承`AppCompatActivity`(AndroidX库中的基类,提供兼容性支持)[^5]。-重写`onCreate`方法。```javapublicclassMyActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);}}```3.**创建对应的布局文件**-在`res/layout`目录上右键->`New`->`LayoutResourceFile`-输入文件名(例如`activity_my`),然后点击确定。4.**在Activity中绑定布局**-在`onCreate`方法中调用`setContentView`方法,传入布局文件的资源ID。```javasetContentView(R.layout.activity_my);```5.**在AndroidManifest.xml中注册Activity**-打开`AndroidManifest.xml`文件,在`<application>`标签内添加`<activity>`标签。-指定`android:name`属性为刚才创建的Activity类(带包名或使用相对路径如`.MyActivity`)。-如果需要作为主入口,则添加`<intent-filter>`(通常主Activity需要)[^4]。```xml<activityandroid:name=".MyActivity"android:exported="true"><!--如果作为主Activity,则添加以下intent-filter--><!--<intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter>--></activity>```###方法二:使用AndroidStudio的快捷方式创建(推荐)1.**右键点击项目包名**-在AndroidStudio的项目视图中,右键点击要创建Activity的包名(通常在`java`目录下你的应用包内)。2.**选择新建Activity的选项**-选择`New`->`Activity`->选择你想要的Activity模板(例如`EmptyActivity`)。3.**配置Activity**-在弹出的对话框中,输入Activity的名称(例如`MyActivity`),系统会自动生成布局文件名(通常为`activity_my`)。-确保语言(Java/Kotlin)包名正确。-勾选`LauncherActivity`如果需要将其作为主Activity(这样会自动在AndroidManifest中配置intent-filter)。-点击`Finish`。4.**自动生成**-AndroidStudio会自动完成以下工作:-创建Activity类文件(继承AppCompatActivity[^5])。-创建对应的布局XML文件。-在`AndroidManifest.xml`中注册该Activity(如果选择了LauncherActivity,还会添加MAINLAUNCHER的intent-filter)。###注意事项-**继承AppCompatActivity**:这是当前推荐的做法,因为它提供了对旧版Android系统的兼容性支持,并且支持MaterialDesign的特性[^5]。-**布局绑定**:在`onCreate`方法中使用`setContentView`绑定布局。-**注册Activity**:所有Activity都必须在`AndroidManifest.xml`中注册,否则无法启动。###示例代码下面是一个通过快捷方式生成的Activity的示例代码:```javapackagecom.example.myapp;importandroidx.appcompat.app.AppCompatActivity;importandroid.os.Bundle;publicclassMyActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_my);//绑定布局}}```###相关布局文件`res/layout/activity_my.xml`(自动生成的基本布局):```xml<?xmlversion="1.0"encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><!--可以在此添加界面元素--></androidx.constraintlayout.widget.ConstraintLayout>```###在AndroidManifest.xml中的注册```xml<application...><activityandroid:name=".MyActivity"android:exported="true"><!--如果是主Activity,会有如下intent-filter--><!--<intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter>--></activity></application>```通过以上步骤,我们就成功创建了一个新的Activity。§§相关问题§§1.如何在不同Activity之间传递数据?2.如何设置Activity的启动模式(launchMode)?3.如何实现Activity的生命周期管理?</think>### Android Studio 新建 Activity 的完整指南 在 Android Studio 中创建 Activity 主要有两种方法:手动创建使用向导创建。以下是详细步骤: #### 方法一:使用向导创建(推荐) 1. **右键点击包目录** - 在项目结构中,右键点击要创建 Activity 的包名(通常在 `java/your.package.name`) - 选择 `New > Activity > Empty Activity`[^1] 2. **配置 Activity** ```text Activity Name: MyNewActivity Layout Name: activity_my_new (自动生成) Package name: your.package.name Language: Java/Kotlin Source Language: Java ✔️ Generate Layout File ✔️ Launcher Activity (仅当作为主界面时需要) ``` 3. **自动生成内容** - 系统会自动创建: - Java 类文件 `MyNewActivity.java` - XML 布局文件 `activity_my_new.xml` - 在 `AndroidManifest.xml` 中注册 Activity[^4] #### 方法二:手动创建 1. **创建 Java 类** - 右键点击包名 > `New > Java Class` - 命名为 `MyManualActivity.java` - 继承 `AppCompatActivity`[^5]: ```java public class MyManualActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } } ``` 2. **创建布局文件** - 右键点击 `res/layout` > `New > Layout Resource File` - 命名为 `activity_manual.xml` - 添加基础布局代码: ```xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> </LinearLayout> ``` 3. **绑定布局** ```java public class MyManualActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_manual); // 绑定布局 } } ``` 4. **在 Manifest 中注册** 打开 `AndroidManifest.xml` 添加: ```xml <application> <activity android:name=".MyManualActivity" android:exported="false"> </activity> </application> ``` #### 关键配置说明 1. **AndroidManifest 重要属性**[^4] ```xml <activity android:name=".MainActivity" android:exported="true"> <!-- 允许外部应用访问 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` - `android:exported="true"`:允许其他应用通过 Intent 启动 - `<intent-filter>`:定义 Activity 的启动方式(主入口需要 MAIN+LAUNCHER) 2. **继承选择**[^5] - 推荐继承 `AppCompatActivity`(兼容旧版 Android) - 避免使用已废弃的 `ActionBarActivity` #### 验证 Activity 是否创建成功 1. 检查三个关键文件: - Java 类文件(位于 `java/包名` 目录) - XML 布局文件(位于 `res/layout`) - AndroidManifest.xml 中的注册项 2. 运行测试: ```java // 在某个按钮点击事件中添加 startActivity(new Intent(this, MyNewActivity.class)); ``` #### 最佳实践 1. **命名规范** - Activity 类名:`功能名+Activity`(如 `LoginActivity`) - 布局文件名:`activity_功能名`(如 `activity_login`) 2. **项目结构** ``` ├── java │ └── com.example.app │ ├── MainActivity.java │ └── MyNewActivity.java ├── res │ └── layout │ ├── activity_main.xml │ └── activity_my_new.xml └── AndroidManifest.xml ``` 3. **继承关系** ```mermaid classDiagram AppCompatActivity <|-- MainActivity AppCompatActivity <|-- MyNewActivity class AppCompatActivity{ +onCreate(Bundle) +setContentView(int) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值