Android(java)学习笔记219:开发一个多界面的应用程序之两种意图
1.两种意图:
(1)显式意图:
在代码里面用intent设置要开启Activity的字节码.class文件;
(2)隐式意图:
Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现,在代码里面设置intent的action和data,框架通过解析清单文件去找到Activity,然后才去开启;
(3)比较 显式意图 和 隐式意图 优缺点?
显式意图:
优点:代码编写很简单,无需额外的配置,只需要指定要激活的组件字节码.class就可以了,不需要在清单文件中配置意图过滤器<intent-filter>
缺点:代码的耦合性比较强。(高内敛、低耦合是我们追求的)
应用场景:自己应用程序开启自己的界面,推荐使用显示意图,效率高。
隐式意图:
应用场景:开启别人的应用程序的界面 或者 自己的界面,想让别的应用程序开启。
2.在Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现笔记中,使用是隐式意图;
这里我们修改成显示意图,如下:
(1)MainActivity.java,修改为如下:
package com.itheima.rpcalc; import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText; public class MainActivity extends Activity {
private Button bt_start;
private EditText et_name; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_start = (Button) findViewById(R.id.bt_start);
et_name = (EditText) findViewById(R.id.et_name);
bt_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 跳转到第二个界面
Intent intent = new Intent(MainActivity.this,CalcActivity.class);
intent.setData(Uri.parse("calc://"+et_name.getText().toString()));//传递数据给另一个CalcActivity,但是不用在清单文件中注册
startActivity(intent);
}
});
}
}
同时这里的AndroidMainfest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.itheima.rpcalc"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.itheima.rpcalc.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>
<!-- 声明一个新的界面 -->
<!-- 这里只需要声明一下Activity,不用注册data,action,schem等等数据-->
<activity android:name="com.itheima.rpcalc.CalcActivity"> </activity>
</application> </manifest>
其他代码不做修改。
(2)明显我们上面这些修改成显式意图,省略了在清单文件声明,更方便。
Android(java)学习笔记219:开发一个多界面的应用程序之两种意图的更多相关文章
- Android(java)学习笔记162:开发一个多界面的应用程序之两种意图
1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...
- Android:日常学习笔记(8)———开发微信聊天界面
Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.
- Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现
1.开启新的Activity的方法: (1)Intent 意图 (2)intent.setAction("自定义") 记得在清单文件中声明 (3)intent.setData(前 ...
- Android(java)学习笔记161:开发一个多界面的应用程序之人品计算器的简单实现
1.开启新的Activity的方法: (1)Intent 意图 (2)intent.setAction("自定义") 记得在清单文件中声明 (3)intent.setData(前 ...
- Android(java)学习笔记222:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)
1.开启界面获取返回值 (1)采用一种特殊的方式开启Activity: startActivityForResult(intent , 0): (2)在被开启的Activi ...
- Android(java)学习笔记221:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)
1.首先我们看看下面这个需求: 这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到" ...
- Android(java)学习笔记165:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)
1.开启界面获取返回值 (1)采用一种特殊的方式开启Activity: startActivityForResult(intent , 0): (2)在被开启的Activi ...
- Android(java)学习笔记164:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)
1.首先我们看看下面这个需求: 这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到" ...
- Android(java)学习笔记217:开发一个多界面的应用程序之清单文件
清单文件的重要参数: <intent-filter> 代表的应用程序的入口界面 <action android:name=&quo ...
随机推荐
- JS 导出图片,toDataURL
//输出图片 function exportCanvasAsPNG(id, fileName) { //获取canvas元素 var canvasElement = document.getEleme ...
- magento错误 Service Temporarily Unavailable magento
前台访问出现错误 Service Temporarily Unavailable magento 解决方法 Service TemporarilyUnavailable字面意思是此服务暂时无法使用,如 ...
- mysql数据类型——枚举enum(‘F’,'M')
ENUM(“value1”,“value2”,...) 说明:枚举,列值可赋予值列表中的某个成员 允许的属性:除通用属性外无其他属性 缺省值:如果列可为NULL,则为NULL:如果列为NOTNULL, ...
- WAMP集成环境更改web根目录
使用WAMP集成环境,如何更改web根目录 做php开发使用WAMP集成环境的同学大部分有过这样的经历:如果你试图修改web根目录,那么你肯定会想到要修改apache/apache2.2.11/con ...
- CodeForces 554B(扫房间)
CodeForces 554B Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u ...
- js的引用顺序
注意:Bootstrap中的JS插件依赖于JQuery,因此JQuery要在Bootstrap之前引用!!! 把JS文件引用放入body的最下面,是为了使js在网页全部加载完后才起作用,比如你的js里 ...
- code first基础
随着.NET 4.0时代的到来,开发者越来越关注如何能加快开发效率,从而构建健壮的程序.而微软在.NET 4.0推出的Entity Framework,无疑是值得开发者去学习的,它实际上是微软的ADO ...
- 首页重定位到mian.action上
<body onload="top.location.href='<%=request.getContextPath()%>/main.action';">
- java 内存 垃圾回收调优
要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的.今天我们将会了解JVM内存的各个部分.如何监控以及垃圾收集调优. Java(JVM)内存模型 正如你从上面的图片看到的,JVM内存被分成多 ...
- 两个div之间有空隙
加句*{ margin:0; padding:0;} 最近在做网页时发现,在IE7下(FF没试过),div与div之间有时会出20个像素左右的空隙,除非把margin设成负值,否则空隙无法去除.我在 ...