Android -- Activity和Fragment

こ雲淡風輕ζ 提交于 2020-01-08 11:57:32

⒈简介

  我们在App上看到的每一个界面它就需要一个Activity,但Activity并不等同于界面,只是界面需要Activity。

  Fragment是碎片化的界面,每一个Activity可以包含很多个Fragment,Fragment不可以作为独立存在的,它必须依赖于Activity,它是受Activity管理的。

⒉Activity的创建三部曲

  1.新建类继承Activity或其子类

package cn.coreqi.activity;

import androidx.appcompat.app.AppCompatActivity;

public class TestActivity extends AppCompatActivity {
}

  2.在AndroidManifest中声明

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="cn.coreqi.activity.TestActivity"></activity>
        <activity android:name=".ButtonActivity"></activity>
        <activity android:name=".TextViewActivity" /> <!-- 注册 activity -->
        <activity android:name=".MainActivity"> <!-- .前面默认会加包名,上面声明了包名,此处为cn.coreqi.helloworld2.MainActivity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <!-- 设置当前activity为应用启动的第一个activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

  3.创建layout文件(布局文件)并在Activity的onCreate中设置。  

  在res/layout下新建布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

</LinearLayout>

  并且在Activity的onCreate方法中设置

package cn.coreqi.activity;

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import cn.coreqi.helloworld2.R;

public class TestActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
    }
}

  一些小技巧

  设置Activity标题头

        <activity android:name=".MainActivity"
            android:label="启动页"> <!-- .前面默认会加包名,上面声明了包名,此处为cn.coreqi.helloworld2.MainActivity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <!-- 设置当前activity为应用启动的第一个activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

  取消标题头(单个Activity)

        <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <!-- .前面默认会加包名,上面声明了包名,此处为cn.coreqi.helloworld2.MainActivity -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <!-- 设置当前activity为应用启动的第一个activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

  取消标题头(全局Activity)

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">

  设置Activity的屏幕方向

        <activity android:name="cn.coreqi.activity.TestActivity"
            android:screenOrientation="portrait"></activity><!--竖屏显示-->

  设置Activity的启动模式

        <activity android:name="cn.coreqi.activity.TestActivity"
            android:launchMode="singleInstance"></activity>

⒊Activity的生命周期

  一个Activity被部署到安卓应用之后跟随应用进程运行,它会在不同的状态之间进行切换,并且在切换状态的同时也会回调相应的方法,我们把Activity不同的状态称之为Activity的生命周期。

  

  

  当点击进入Activity时,执行三个Activity生命周期方法,分别是onCreate、onStart、onResume,点击返回按钮时,执行三个生命周期方法,分别是onPause(暂停)、onStop(停止)、onDestroy(摧毁)。

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!