Android(java)学习笔记73:Intent启动Activity
1. Intent启动Activity案例
(1)首先是main.xml和other.xml文件如下:
main.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is MainActivity!"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="OpenOtherActivity!"
android:id="@+id/btnOpen"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="HideActivity"
android:id="@+id/btnHideActivity"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ExitActivity"
android:id="@+id/btnExitActivity"
/>
</LinearLayout>
接着是other.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" > <TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView" /> </LinearLayout>
(2)MainActivity.java 和 OtherActivity.java文件:
MainActivity.java:
package com.openother; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
//声明按钮
private Button btnOpen, btnHideActivity, btnExitActivity; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//实例按钮
btnOpen = (Button) findViewById(R.id.btnOpen);
btnHideActivity = (Button) findViewById(R.id.btnHideActivity);
btnExitActivity = (Button) findViewById(R.id.btnExitActivity);
//给每个按钮添加监听
btnOpen.setOnClickListener(this);
btnHideActivity.setOnClickListener(this);
btnExitActivity.setOnClickListener(this);
} public void onClick(View v) {
if (v == btnOpen) {
//创建一个意图,并且设置需打开的Activity
Intent intent = new Intent(MainActivity.this, OtherActivity.class);
//发送数据
intent.putExtra("Main", "我是发送的数据~娃哈哈");
//启动另外一个Activity
this.startActivity(intent);
} else if (v == btnHideActivity) {
this.finish();//退出Activity
}else if (v == btnExitActivity) {
System.exit(0);//退出程序
}
}}
其次是OtherActivity.java:
/**
*
*/
package com.openother; import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView; /**
* @author Himi
*
*/
public class OtherActivity extends Activity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);//设置当前的OtherActivity的视图内容绑定R.layout.other的布局文件
tv = (TextView)findViewById(R.id.textView1);
tv.setText("爱一个人好难"); AssetManager mgr = getAssets();//AssetManager---管理应用程序的资产文件,在项目工程的assets文件夹下:
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf");
tv.setTypeface(tf);
}
}
2. 总结:
(1)在开发软件的过程中,两个activity之间的通讯可以通过bundle类来实现,它类似于Map,用于存放key-value名值对形式的值。遇到过这样一种情况,就是没有create bundle,但是当你使用intent.putExtra之后,在另一个被call的activity中,会有bundle被传递过去,
原因就是因为intent.putExtra时,系统会检测有没有bundle,如果没有,则新建一个。所以下面这两个语句的等效的:
Intent intent = new Intent(this,xxx.class);
intent.putExtra("test", true); startActivity(intent);
和:
Intent intent = new Intent(this,xxx.class);
Bundle bundle = new Bundle();
bundle.putBoolean("test", true);
intent.putExtras(bundle);
startActivity(intent);
这里的原因是我们可以追踪到putExtras()方法的底层如下:
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Android(java)学习笔记73:Intent启动Activity的更多相关文章
- Android开发学习笔记:Intent的简介以及属性的详解【转】
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...
- 【转载】Android开发学习笔记:Intent的简介以及属性的详解
http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent ...
- Android - 通过Intent启动Activity
通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...
- Android:日常学习笔记(6)——探究活动(4)
Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android开发学习之LauncherActivity开发启动的列表
Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果: 建立主Activity:OtherActivity.java [jav ...
- Android:日常学习笔记(6)——探究活动(3)
Android:日常学习笔记(6)——探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的 ...
- Android:日常学习笔记(5)——探究活动(2)
Android:日常学习笔记(5)——探究活动(2) 使用Intent在活动之间穿梭 什么是Intent Intent时Android程序中各组件之间进行交互的一种重要方式,他不仅可以指明当前组件想要 ...
随机推荐
- 在新项目下使用rbc权限
例子说明: 8 个步骤 1. 拷贝rabc这个app到项目中 2. 把迁移过来的rbac下migrations记录删除 3. 把rabc注册到项目中 4. 创建数据库迁移 5. 注册admin,录入数 ...
- 查看SQL SERVER Job details
SELECT [sJOB].[job_id] AS [JobID] , [sJOB].[name] AS [JobName] , [sDBP].[name] AS [JobOwner] , [sCAT ...
- OS---存储器
1.存储器的层次结构 1.1 概述 理想情况下,存储器应当速度非常快.并且与处理器的速度匹配.容量大且价格低廉: 实际情况,无法满足上述三个条件: 于是在现在OS中,存储器采用 层次结构 来组织: ...
- 主席树-----动态开点,不hash
POJ - 2104 第k大 #include <cstdio> #include <cstdlib> #include <cstring> #include &l ...
- nodejs --- crypto实现加密(转)
crypto实现加密 本文转自:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0 ...
- 数据库的ACID跟事务隔离级别
摘抄:http://blog.csdn.net/shuaihj/article/details/14163713 ------------------------------------------- ...
- 操作符&流程控制
运算符:算术运算符 赋值运算符 字符串运算符 递增(++)和递减(--)运算符 逻辑运算符 比较运算符 三元运算符 1.算术运算符 算术运算符,用于完成各种算术运 ...
- mybatis连接mysql数据库实现的jdbc功能
最近公司项目要使用myBatis,自己以前没有接触过,就在网上找到了一些资料研究了些.初步做出了基于myBatis连接mysql数据库的jdbc实现的功能. employee.java package ...
- centos6.3 配置防火墙,开启80端口、3306端口
vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火 ...
- JetBrains IDE激活
License server(服务器地址为http://idea.iteblog.com/key.php) Active Code:生成网址:http://idea.iteblog.com/