当前位置: 首页 > 编程日记 > 正文

01_创建一个新的activityactivity配置清单文件

今天开始学四大组件。今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者。四大组件,咱们一天一个。Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面。创建多个Activity,在不同的页面之间进行跳转并且在不同的页面之间进行数据的传递。

创建一个新的Activity,想办法把它给打开。打开一个Activity就涉及到一个隐式意图和一个显式意图。intent,第二天的时候打电话,电话拨号器就用到了这个东西。

Activity的生命周期。讲Servlet的时候提到过生命周期的概念。说一下Activity的生命周期和它的生命周期方法究竟有什么用。

最后说一下Activity的任务栈。

Activity是四大组件里面最重要的一个组件。所以今天的内容需要全部掌握,都是非常重要的重点。必须全部掌握。


创建一个新的Activity。其实之前写代码的时候Activity实际上都不需要咱们创建。因为咱们默认勾上了帮咱们创建一个空的MainActivity。现在得自己创建一个新的Activity。

package com.itheima.createnewactivity;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//加载界面 解析xml文件  把xml文件中声明的控件  创建出对应的java对象
        setContentView(R.layout.activity_main);//new M
    }
}
package com.itheima.createnewactivity;import android.app.Activity;
import android.os.Bundle;public class SecondActivity extends Activity {//重写onCreate()方法
    @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_second);//第二个Activity对应的Java类已经写好了.//findViewById(id)//setOnClickListener
    }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /></RelativeLayout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp"android:textColor="#ff0000"android:text="我是第二个Activity" /></RelativeLayout>

为什么要重写这个onCreate()方法?onCreate()什么时候执行这个还记得吗?第一天在讲电话拨号器的时候就提过这个。当我的Activity一创建的时候,这个对象创建起来之后系统就会帮助咱们调用onCreate()方法。所以在onCreate()方法中要做的就是跟初始化相关的操作。比如setContentView把界面初始化过来。比如findViewById(id)找到我需要操作的目标。比如说我给按钮设置点击事件,setOnClickListener。这些东西都要放在onCreate()里面。


不在AndroidManifest.xml里面配置一下是无法显示SecondActivity界面的。MainActivity在清单文件里面有一个activity节点。每创建出一个新的Activity如果你想用的话就必须在清单文件里面声明对应的Activity。为什么必须声明?需要注意的是所有的四大组件都不能自己去创建这个对象。

MainActivity也有无参的构造而且是public也可以去调,但是咱不能自己调。所有的四大组件的对象都需要系统帮助咱们创建。系统创建怎么创建?就是通过反射的方式。所以你必须在清单文件里面声明对应的节点。

SecondActivity第二个界面也已经声明完了。

问题出在清单文件里面activity节点的意图过滤器的那段代码。

<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>

意图过滤器如果你给它指定了一个action,这个叫MAIN.category有一个东西叫LAUNCHER.LAUNCHER是启动/发射.所以LAUNCHER这个东西是作为了一个启动器。如果你的一个Activity声明了这么一个intent-filter意图过滤器,它里面action是MAIN,category是LAUNCHER,那么这一个Activity就会作为应用的入口并且在桌面上放了一个图标。


为什么SecondActivty也是写MAIN和LAUNCHER,但是启动的是第一个MainActivity.因为MainActivity在前面,你一个应用那肯定只有一个入口。它这个PULL解析是一行一行来的,解析到<activity默认谁在前面谁就是启动器。但是呢桌面上这个图标确实给SecondActivity放了一个。

当前就比较诡异了,当前我这一个应用但是桌面上有两个图标。但是呢点击去的界面还不一样。正常的情况下所有的应用只有这么一个图标。但是有的设备上你即使这么写了它也不会帮你创建两个图标,它会自动地把第二个Activity过滤掉,默认只是第一个Activity起作用。但是只要有的设备可能会出现这个情况,那咱们就不能够这么做。

所以说每一个应用只能有一个Activity下配置这么一个intent-filter,就是action是MAIN,category是LAUNCHER.

应用的名字是application节点的android:label显示的.

    <applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"

如果application节点的android:label和下面的activity节点的android:label标签是一样的那就无话可说了。但是可以给activity节点指定一个特殊的android:label标签.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.createnewactivity"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.createnewactivity.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.itheima.createnewactivity.SecondActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.createnewactivity"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.createnewactivity.MainActivity"android:label="第一个activity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.itheima.createnewactivity.SecondActivity"android:label="第二个activity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

你作为启动界面的Activity它里面所配置的android:label,如果你这个没有配置的话它默认会找application.如果你配置了的话一定是用Activity的android:label.application的label是在应用管理器里显示的.

application的label在这里显示。

android:icon="@drawable/ic_launcher"

icon就是给它指定一个图标。如果在activity节点下你声明了android:icon和android:label,那么默认他使用的就是activity下的icon,如果你没声明的话他会去找application节点下的icon和label。


一个应用两个图标看起来是很诡异的。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.createnewactivity"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.itheima.createnewactivity.MainActivity"android:icon="@drawable/header1"android:label="第一个activity" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.itheima.createnewactivity.SecondActivity"android:icon="@drawable/header2"android:label="第二个activity" ><!--  <intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>--></activity></application></manifest>

在activity和application节点里面咱们都可以去声明一个icon和一个label,如果它们俩都有默认使用activity里面,application这个最终就会展示到我的应用管理器,在那个位置上会看到application节点下声明的对应的内容。

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7106003.html

相关文章:

Java 集合——List集合

Collection接口是集合的老祖宗&#xff0c;定义了接口的基本方法。 List是Collection接口的子接口&#xff0c;也是最常用的接口&#xff0c;此接口对Collection接口进行了大量的扩展&#xff0c;List集合里的元素是可以重复的。 List接口的主要实现类有ArrayList&#xff0c;和…

jQuery中的插件机制

我们在很多地方都用过插件&#xff0c;插件能让我们操作某个东西变得异常方便&#xff0c;jQuery也不例外&#xff0c;为了扩展jQuery库函数&#xff0c;jQuery提供了两种方式&#xff1a; jQuery.extend(object)&#xff1a;扩展jQuery对象本身&#xff0c;主要是用来扩展jQu…

ActiveRecordBase借助NHibernate的条件获取实体类对象

ActiveRecordBase.FindAll() 函数其中有一个这样的版本的参数ActiveRecordBase.FindAll(TargetType AsSystem.Type,Orders() AsNHibernate.Expression.Order,ParamArraycriterias() AsNHibernate.Expression.ICriteriion) 可以方便的使用NHibernate的条件查询&#xff0c;例如…

轻量级持久层V2版本代码与模板

首页列表上好像不能下载&#xff0c;要下载文件请进来下。 上篇帖《轻量级持久层的讨论》中大家踊跃的提出各种意见&#xff0c;让我得到不少灵感&#xff0c;这些新的想法将会应用到下一个版本的开发中&#xff0c;我先得试试可行性如何。这里先给出这一版本的代码和模板&…

最近用到的一些方法技巧

郁闷&#xff0c;msn上不去&#xff0c;没法干活。记上最近项目中用到的一些code snippet1.查询今天的记录select datediff(dd,ConvDateTime,getdate()),* from dbo.rbConversationMaster where datediff(dd,ConvDateTime,getdate())0 DataDiff Returns the number of date and…

MyBatis的使用

要了解MyBatis的使用&#xff0c;首先要了解MyBatis是因何而来的&#xff1f;为了和数据库进行交互&#xff0c;通常的做法是将SQL语句写在Java代码里&#xff0c;然后生成class文件&#xff0c;而我们知道class文件是无法修改的。假如后来我们只想改变一下SQL语句&#xff0c;…

iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统

全网科技 温馨提醒&#xff1a;iLEX RAT和Semi-Restore的作用都是让你的已越狱的设备恢复至越狱的初始状态。可是要注意无论你是用iLexRAT冬青鼠还是Semi-restore。对于还原来说都存在巨大的风险。非必要情况下&#xff0c;还是不要任意使用它们。*iLEX RAT冬青鼠安装教程&…

HDU 4832(DP+计数问题)

HDU 4832 Chess 思路&#xff1a;把行列的情况分别dp求出来&#xff0c;然后枚举行用几行。竖用几行&#xff0c;然后相乘累加起来就是答案 代码&#xff1a; #include <stdio.h> #include <string.h> #include <iostream> using namespace std;typedef long…

社会生活中常用的14条著名法则

一、 马太效应          八、 水桶定律 二、 手表定理          九、 蘑菇管理三、 不值得定律         十、 奥卡姆剃刀定律四、 彼得原理          十一、 二八定律五、 零和游戏原理        十二、 钱的问题六、 华盛顿合作…

Spring框架之(无参、有参)构造方法与setter方法的初始化

我们之前要创建对象时&#xff0c;都需要new一下&#xff0c;但使用了Spring后&#xff0c;就不需要再new了&#xff0c;可以直接使用类名调用了。这是因为Spring 已经为我们自动创建好了Java对象&#xff08;但需要在xml文件里进行一些配置&#xff09;。 举个例子看看吧&…

P1034 矩形覆盖

题目描述 在平面上有 n 个点&#xff08;n < 50&#xff09;&#xff0c;每个点用一对整数坐标表示。例如&#xff1a;当 n&#xff1d;4 时&#xff0c;4个点的坐标分另为&#xff1a;p1&#xff08;1&#xff0c;1&#xff09;&#xff0c;p2&#xff08;2&#xff0c;2&a…

[linux][c语言]用socket实现简单的服务器客户端交互

Socket解释&#xff1a; 网络上的两个程序通过一个双向的通信连接实现数据的交换&#xff0c;这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制&#xff0c;取后一种意思。通常也称作"套接字"&#xff0c;用于描述IP…

Spring之注解方式实例化Java类

我们知道一个<bean></bean>就代表一个对象&#xff0c;如果想创建多个对象&#xff0c;就要使用多个<bean></bean>&#xff0c;所以这里有个简便的方法&#xff1a; <context:component-scan base-package"com.jd"></context:comp…

3.Linux Shell流程控制

1.if/else结构 if condition thenstatements elif condition thenstatements elsestatements fi 2.条件 与C语言不同的是&#xff0c;条件(condition)实际上是语句列表&#xff0c;而不是一般的布尔表达式。 按照惯例&#xff0c;函数以及命令的退出状态用0表示成功&#xff0c…

ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型

ASP.NET 2.0 中增加了内建的 MasterPage 的支持&#xff0c;这对我们来说是一个很大的便利。然而经过一段时间的使用&#xff0c;我发现 MasterPage 并不是那么完美&#xff1a;嵌套的 MasterPage 不能支持设计时界面&#xff0c;以及下面要提到的Content Page 中增加 CSS 的问…

详细说明Spring--AOP

这篇博客较长&#xff0c;耐心读完或许会有“柳暗花明又一村”的感觉哦&#xff01; 为什么? 我先不说AOP是什么&#xff0c;我先说说为什么要用AOP&#xff0c;依照惯例&#xff0c;我还是先举一个例子&#xff1a; 先把项目结构展现出来&#xff1a; 我们先在com.jd.calcu…

ES6中的Promise详解

Promise 在 JavaScript 中很早就有各种的开源实现&#xff0c;ES6 将其纳入了官方标准&#xff0c;提供了原生 api 支持&#xff0c;使用更加便捷。 定义 Promise 是一个对象&#xff0c;它用来标识 JavaScript 中异步操作的状态&#xff08;pending, resolve, reject&#xff…

Jquery 将表单序列化为Json对象

大家知道Jquery中有serialize方法&#xff0c;可以将表单序列化为一个“&”连接的字符串&#xff0c;但却没有提供序列化为Json的方法。不过&#xff0c;我们可以写一个插件实现。 我在网上看到有人用替换的方法&#xff0c;先用serialize序列化后&#xff0c;将&替换成…

ASP.NET常用函数

Abs(number) 取得数值的绝对值。 Asc(String) 取得字符串表达式的第一个字符ASCII 码。 Atn(number) 取得一个角度的反正切值。 CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 CBool(expression) 转换表达式为Boolean …

简单快速修改大量重复代码(Intellij IDEA)

血与泪的教训啊&#xff01;&#xff01;&#xff01;刚开始不知道&#xff0c;一味地疯狂点鼠标和键盘&#xff0c;点到手抽筋才想起来百度一下如何快速修改大量重复代码&#xff0c;呜呜呜~~~ 给大家分享一下吧&#xff0c;可以节约大家大量的时间哦&#xff1a; …

5.3Role和Claims授权「深入浅出ASP.NET Core系列」

5.3Role和Claims授权「深入浅出ASP.NET Core系列」 原文:5.3Role和Claims授权「深入浅出ASP.NET Core系列」希望给你3-5分钟的碎片化学习&#xff0c;可能是坐地铁、等公交&#xff0c;积少成多&#xff0c;水滴石穿&#xff0c;码字辛苦&#xff0c;如果你吃了蛋觉得味道不错&…

電子商務新紀元-WebService With BizSnap

電子商務新紀元-WebService With BizSnap WebService SOAP(Simple Object Access Protocol) Web Services Description Language (WSDL) DELPHI 的SOAP 撰寫WebService Server 程式 撰寫Client 端程式 魔法的秘密 傳送複雜型態資料(Complex Type) 傳送檔案或圖形 處理資料庫 C…

mysql优化1

1.以空间换时间,减少连表查询的次数,适当增加冗余字段 例如: 计算的字段,可以事先统计完,方数据库中,来一个加一个,而不用现场计算 2.字段类型: 整型 > date,time >enum >char >varchar >blob,text 字符串需要考虑字符集和校对集,因此比整型慢 time会考虑时期,用…

用XP做服务器突破10人限制

用XP做服务器突破10人限制用微软提供的小工具 MetaEdit&#xff0c;最新版本是2.2。下载地址:http://download.microsoft.com/download/iis50/Utility/5.0/NT45/EN-US/MtaEdt22.exe安装好以后将树型目录展开至LM \ W3SVC直接在W3SVC文件夹上单击&#xff0c;选择右边列表中Name…

Java反射(详述版)

一、什么是反射&#xff1f; 我们先来看一个例子&#xff1a; package venus; public class Student {public String name;public Student(){System.out.println("无参构造方法");}public void doHomework(){System.out.println(name "正在做作业~~~");…

s9.16作业,员工信息表

转载https://blog.csdn.net/qq_35883464/article/details/83151464 实现员工信息表文件存储格式如下&#xff1a;id&#xff0c;name&#xff0c;age&#xff0c;phone&#xff0c;job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,nezha,25,1333235322,IT 现在需要…

Dubbo+zookeeper使用方法以及注意事项

Dubbozookeeper使用方法以及注意事项最近在一个项目中想做一个数据库查询的服务&#xff0c;目的是将数据库查询这块从程序中脱离出来&#xff0c;形成一个公共的服务平台&#xff0c;大家都可以调用&#xff0c;经过考虑决定选用Dubbozookeeper这个经典的组合来实现&#xff0…

淘淘经受了一次考验...

18日去香港给一个潜在客户做了一次演示&#xff0c;顺便帮淘淘买了一罐奶粉&#xff0c;因为听说香港的奶粉质量比较好&#xff0c;是原装进口的。下午6点多回到深圳&#xff0c;没想到&#xff0c;听到一个不太好的消息。淘淘的奶奶推车带淘淘出去的时候&#xff0c;不小心&am…

使用MasterPage遇到的问题

最近重新拿起.NET&#xff0c;发现一切变的那么的陌生了&#xff0c;发展得真是快啊。。。在使用MasterPage时&#xff0c;要从一个页面的Form提交数据到另一个页面的Form&#xff0c;应该如何处理&#xff1f;不使用MasterPage的时候&#xff0c;可以直接使用PostBackUrl"…

Machine Learning——DAY1

监督学习&#xff1a;分类和回归 非监督学习&#xff1a;聚类和非聚类 1.分类和聚类的区别&#xff1a; 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label)&#xff0c;再根据标签来区分归类。 聚类是指事先没有“标签”而通过某种成团分析找出事物之…