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:开发一个多界面的应用程序之两种意图的更多相关文章

  1. Android(java)学习笔记162:开发一个多界面的应用程序之两种意图

    1.两种意图: (1)显式意图: 在代码里面用intent设置要开启Activity的字节码.class文件: (2)隐式意图: Android(java)学习笔记218:开发一个多界面的应用程序之人 ...

  2. Android:日常学习笔记(8)———开发微信聊天界面

    Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.

  3. Android(java)学习笔记218:开发一个多界面的应用程序之人品计算器的简单实现

    1.开启新的Activity的方法: (1)Intent 意图 (2)intent.setAction("自定义")  记得在清单文件中声明 (3)intent.setData(前 ...

  4. Android(java)学习笔记161:开发一个多界面的应用程序之人品计算器的简单实现

    1.开启新的Activity的方法: (1)Intent 意图 (2)intent.setAction("自定义")  记得在清单文件中声明 (3)intent.setData(前 ...

  5. Android(java)学习笔记222:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)

    1.开启界面获取返回值 (1)采用一种特殊的方式开启Activity:               startActivityForResult(intent , 0): (2)在被开启的Activi ...

  6. Android(java)学习笔记221:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)

    1.首先我们看看下面这个需求: 这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到" ...

  7. Android(java)学习笔记165:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例的优化:请求码和结果码)

    1.开启界面获取返回值 (1)采用一种特殊的方式开启Activity:               startActivityForResult(intent , 0): (2)在被开启的Activi ...

  8. Android(java)学习笔记164:开发一个多界面的应用程序之不同界面间互相传递数据(短信助手案例)

    1.首先我们看看下面这个需求: 这里我们在A界面上,点击这个按钮"选择要发送的短信",开启B界面上获取网络上各种短信祝福语,然后B界面会把这些网络祝福语短信发送给A界面到" ...

  9. Android(java)学习笔记217:开发一个多界面的应用程序之清单文件

    清单文件的重要参数:     <intent-filter>             代表的应用程序的入口界面           <action android:name=&quo ...

随机推荐

  1. 企业证书发布APP

    http://blog.csdn.net/xueer8835/article/details/18033221 1.首先要企业版的开发者帐号2.证书配置参考 IOS开发--企业版IDP的申请及“In  ...

  2. SQL SERVER CEILING 函数 取整时的坑。。。

    CEILING ---返回大于或等于指定数值表达式的最小整数 当舍去同一个大小的值 但是正负方向不一致时要注意小数位四舍五入的问题   例如: SELECT CEILING($123.45), CEI ...

  3. Delphi中ADO异步执行方式

    当ADO开始处理数据后,应用程序必须等到ADO处理完毕之后才可以继续执行.但是除了同步执行方式之外,ADO也提供了异步执行的方式,允许当ADO处理时,应用程序仍然能够先继续执行.而当ADO处理数据完毕 ...

  4. Palindrome(最长公共子序列)

    Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 48526   Accepted: 16674 Description A p ...

  5. HDU 5410 CRB and His Birthday

    题目大意: 一个人要去买礼物,有M元.有N种礼物,每件礼物的价值是Wi, 你第i件礼物买k个 是可以得到 Ai * k + Bi 个糖果的. 问怎么才能使得你得到的糖果数目最多.   其实就是完全背包 ...

  6. wpa_cli 连接 wifi

    转自:http://hi.baidu.com/yyangjjun/item/9dfe8e175439fc7a1009b5ba   1: run wpa_supplicant first use the ...

  7. 动态规划(二维背包问题):UVAoj 473

     Raucous Rockers  You just inherited the rights to n previously unreleased songs recorded by the pop ...

  8. 使用atomic一定是线程安全的吗

    这个问题很少遇到,但是答案当然不是.atomic在set方法里加了锁,防止了多线程一直去写这个property,造成难以预计的数值.但这也只是读写的锁定.跟线程安全其实还是差一些.看下面. @inte ...

  9. windows 批量执行命令的脚本

    因为老板一个电话,我的国庆节就没了....,老板要我写个东西,能批量执行500台windows的命令并返回结果,虽然完成以后是非常的简单,但是因为我走了很多弯路,一开始想用powershell来写,后 ...

  10. IT项目经理应具备的十大软技能

    现在,企业对IT部项目经理的要求越来越多.如果你认为IT项目成员只需要技术性能力,那可就错了. 据IT招聘公司调查发现,几年人们对项目管理软技能的兴趣明显浓厚起来.许多企业尽量避免把IT部门看成只是成 ...