建立、配置和使用Activity——启动、关闭Activity
一个Android应用通常都会包含多个Activity,但只有一个Activity会作为程序的入口——当该Android应用运行时将会自启动并执行该Activity。至于应用中的其他Activity,通常都由入口Activity启动,或由入口Activity启动的Activity启动。
Activity启动其他Activity有如下两个方法。
- startActivity(Intent intent):启动其他Activity。
- startActivityForResult(Intent intent,int requestCode):以指定指定的请求码(requestCode)启动Activity,而且程序将会等到新启动Activity的结果(通过重写onActivityResult(...)方法来获取)。
启动Activity时可指定一个requestCode参数,该参数代表了启动Activity的请求码。这个请求码的值由开发者根据业务自行设置,用于标识请求来源。
上面两个方法都用到了Intent参数,Intent是Android应用里各组件之间通信的重要方式一个Activity通过Intent来表达自己的“意图”——想要启动哪个组件,被启动的组件即可是Activity组件,也可是Service组件。
Android为关闭Activity准备了如下两个方法。
- finish():结束当期Activity。
- finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。
下面的示例程序示范了如何启动Activity,并允许程序在两个Activity之间切换。
第一个Activity的界面布局文件如下:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <Button android:id="@+id/bn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="启动第二个Activity"/>
- </LinearLayout>
对应的Java代码如下:
- package com.example.studyactivity;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class StartActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_start);
- //获取应用程序的bn按钮
- Button bn=(Button)findViewById(R.id.bn);
- //为bn按钮绑定事件监听器
- bn.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- //创建需要启动的Activity对应的Intent
- Intent intent=new Intent(StartActivity.this,SecondActivity.class);
- //启动intent对应的Activity
- startActivity(intent);
- }
- });
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.start, menu);
- return true;
- }
- }
上面的程序中粗体字代码就是在Activity中启动其他Activity的关键代码。
程序中第二个Activity的界面同样简单:它只包含两个按钮,一个按钮用于简单的返回上一个Activiy(并不关闭自己),另一个按钮用于结束自己并返回上一个Activity。
第二个Activity的界面布局文件如下:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <Button android:id="@+id/previous"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="返回"/>
- <Button android:id="@+id/close"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="返回并关闭自己"/>
- </LinearLayout>
下面是第二个Activity的Java代码。
- package com.example.studyactivity;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class SecondActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_second);
- //获取应用程序中的previous按钮
- Button previous=(Button)findViewById(R.id.previous);
- //获取应用程序的close按钮
- Button close=(Button)findViewById(R.id.close);
- //为previous按钮绑定事件监听器
- previous.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- //获取启动当前Activity的上一个Intent
- Intent intent=new Intent(SecondActivity.this,StartActivity.class);
- //启动intent对应的Activity
- startActivity(intent);
- }
- });
- //为close按钮绑定事件监听器
- close.setOnClickListener(new OnClickListener(){
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- //获取当前Activity的上一个Intent
- Intent intent=new Intent(SecondActivity.this,StartActivity.class);
- //启动Intent对应的Activity
- startActivity(intent);
- //结束当前Activity
- finish();
- }});
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.second, menu);
- return true;
- }
- }
上面的程序中两个按钮的监听器里的代码只有一行区别:finish(),如果有这行代码,则表明该Activity会结束自己。
运行将看到下图:
单击上图中的按钮将看到下图效果:
建立、配置和使用Activity——启动、关闭Activity的更多相关文章
- 建立、配置和使用Activity——启动其他Activity并返回结果
Activity还提供了一个startActivityForResult(Intent intent,int requestCode)方法来启动其他Activity.该方法用于启动指定Activity ...
- 【Android-关闭所有Activity】关闭activity之前的所有activity,重启actibity
Android关闭activity之前的所有activity,重启actibity 直接关闭一个activity之前的所有Activity页面 解决方法:清理activity堆栈 Intent ine ...
- Android零基础入门第74节:Activity启动和关闭
上一期我们学习了Activity的创建和配置,当时留了一个悬念,如何才能在默认启动的Activity中打开其他新建的Activity呢?那么本期一起来学习如何启动和关闭Activity. 一.概述 经 ...
- Activity启动模式 及 Intent Flags 与 栈 的关联分析
http://blog.csdn.net/vipzjyno1/article/details/25463457 Android启动模式Flags栈Task 目录(?)[+] 什么是栈 栈 ...
- Android 面试必备 - 系统、App、Activity 启动过程“一锅端”
Android 系统启动过程 从系统层看: linux 系统层 Android系统服务层 Zygote 从开机启动到Home Launcher: 启动bootloader (小程序:初始化硬件) 加载 ...
- Activity启动创建 (AcitivtyManageService,ActivityThread,Activity)
ActivityThead,ActivityManagerService,Activity <<Android内核剖析>>中有一章节专门介绍 Activity框架和管理结构A ...
- Activity详解一 配置、启动和关闭activity
先看效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个And ...
- Activity详解一 配置、启动和关闭activity转载 https://www.cnblogs.com/androidWuYou/p/5887726.html
先看效果图: Android为我们提供了四种应组件,分别为Activity.Service.Broadcast receivers和Content providers,这些组建也就是我们开发一个And ...
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
在IOS系统里,我们打开app都是有启动动画的,这样子在打开一个新窗体,用户感觉有个过渡动画,体验效果很好,不会觉得很突然就冒出一个窗体,下面就实现一个android 的activity启动和关闭动画 ...
随机推荐
- 管理Fragments(转)
转:原文链接 http://www.cnblogs.com/mengdd/archive/2013/01/09/2853254.html 管理Fragments FragmentManager 为了管 ...
- Linux基本命令之用户系统相关命令
1.格式说明 [simon@localhost simon]$ [simon@localhost ~]$ 这两种方式表示相同.simon是指定用户,localhost是计算机名字,如果不设置默认为lo ...
- 如何把mysql的ID归0?
如何把mysql的ID归0 可以归0的,truncate table + 表名 就行了
- Java正则表达式细节1
Java中使用特定的字符类别比如 \d \s \w \d 匹配数字 \s 匹配空白字符 \w 匹配数字或者字符或者下划线[a-zA-Z0-9_] 比如使员正则的时候: 使用的是2个 斜杠 @Test ...
- PAT (Advanced Level) 1003. Emergency (25)
最短路+dfs 先找出可能在最短路上的边,这些边会构成一个DAG,然后在这个DAG上dfs一次就可以得到两个答案了. 也可以对DAG进行拓扑排序,然后DP求解. #include<iostrea ...
- The 2014 ACMICPC Asia Regional Xian Online
[A]签到题 [B]后缀数组 [C]染色,DP(感觉可出) [D]BFS搜索,有点麻烦 [E]博弈论,Nim博弈 [F]BFS状态搜索 [G]概率DP+状态压缩 [H]异或+构造 [I]矩阵快速幂(队 ...
- margin 相关 bug 系列
原文地址:margin系列之bug巡演 by @doyoe IE6浮动双倍margin bug 这当是IE6最为经典的bug之一. 触发方式 元素被设置浮动 元素在与浮动一致的方向上设置margin值 ...
- linux下 mysql 学习(一)
1.登录mysql [root@test1 local]# mysql Welcome to the MySQL monitor. Commands end with ; or g. Your My ...
- Cannot call sendError() after the response has been committed - baiyangliu - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
- HTML5绘制矩形和圆形并且还有获取在这个图层内的坐标的思路和代码 - feilong_12的专栏 - 博客频道 - CSDN.NET
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...