今天学习了Intent的基本用法。Intent是什么?Intent在Android中的核心作用就是“跳转”(Android中的跳转机制),同时可以携带必要的信息,将Intent作为一个信息桥梁。最常用的莫过于从一个activity跳转到另一个activity,然后返回到上一个activity。还可以在不同组件间进行数据传递。

Intent可分为两种,显示Intent和隐式Intent。

显式Intent定义对于明确指出了目标组件名称的Intent,我们称之为显式Intent。 即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。

    Intent intent = new Intent(this, Main2Activity.class);

    startActivity(intent);

I
 显式意图还可以根据目标组件的包名、全路径名来指定开启组

    Intent intent = new Intent();
intent.setClassName("com.android.deskclock","com.android.deskclock.DeskClock"); startActivity(intent);

隐式Intent定义对于没有明确指出目标组件名称的Intent,则称之为隐式Intent。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。

   <activity android:name="com.itcast.intent.Activity02">
<intent-filter>
<action android:name="cn.itscast.xxx"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>


使用隐式意图开启Activity的示例代码如下所示:

Intent intent = new Intent();
// 设置动作和清单文件一样
intent.setAction("cn.itscast.xxx");
startActivity(intent);

显式intent例子:

package com.nyl.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener { private Button btnHome; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnHome = (Button) findViewById(R.id.btnHome);
btnHome.setOnClickListener(this);
} @Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btnHome:
Intent it = new Intent();
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_HOME);
startActivity(it);
break;
}
}
}

隐式intent例子:

package com.nyl.intenttest;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button; public class MainActivity2 extends Activity implements View.OnClickListener { private Button btnTwo; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
btnTwo = (Button) findViewById(R.id.btnTwo);
btnTwo.setOnClickListener(this);
} @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnTwo:
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
startActivity(it);
break;
}
}
}
<activity android:name=".MainActivity2"
android:label="Activity2">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>

 

寒假安卓app开发学习记录(7)的更多相关文章

  1. 寒假安卓app开发学习记录(3)

    今天终于开始正式的安卓软件开发学习.开始用了大约一个小时的时间把创建第一个软件的学习视频观看了一下.跟着视频一边学习一边操作. 首先是创建项目,创建的过程和之前创建Java项目的过程相似.先给app起 ...

  2. 寒假安卓app开发学习记录(1)

    今天是安卓软件开发的第一天.虽然之前有了对javaweb的学习,但是对基于安卓的软件开发还是一无所知.所以,第一步就是寻找学习资源,从慕课网上还有菜鸟教程上都找到了对应的教程.然后就开始了开发的第一步 ...

  3. 寒假安卓app开发学习记录(4)

    今天的任务第一个项目运行并部署.没想到第一个环节就出现了错误,运行之后eclipse报错:Errors occurred during the build.Errors running builder ...

  4. 寒假安卓app开发学习记录(2)

    今天属实是头疼的一天.开始的时候是简单了解了一下安卓的系统架构,了解到大概分为四个部分. 然后看了两节创建安卓项目的课程,准备去实践一下的时候突然发现我的eclipse里竟然没有Android选项.查 ...

  5. 寒假安卓app开发学习记录(6)

    今天把之前学过的内容复习了一遍,然后用了大概一个小时的时间看了看教学视频. 学到的主要内容是如何调试Android程序,以及Android的应用以及打包过程.   调试: 依次点击Run“-”Atta ...

  6. 寒假安卓app开发学习记录(5)

    第一个项目运行成功! 今天主要是看视频 ,学习Android项目的目录结构.大概学习了一个小时左右.然后在网上学习和对比eclipse上的目录,了解每个目录的功能是什么. 了解了Android项目的目 ...

  7. 安卓app开发-05-Android xml布局详细介绍

    安卓app开发-05-Android xml布局详细介绍 虽然说有 墨刀,墨客 这些图形化开发工具来做 Android 的界面设计,但是我们还是离不开要去学习做安卓原生app,学习 xml 布局还是必 ...

  8. 高性能Cordova App开发学习笔记

    高性能Cordova App开发学习笔记 文件结构 添加插件 构建准备 各个www的作用,prepare命令会将hello\www的内容会拷贝到platform下的wwww目录,知道该改哪里了吧?如果 ...

  9. 安卓app开发-03-项目的基本开发步骤

    android项目的基本开发步骤 这里分享一下开发 安卓 app 的流程,当然有些感觉不必要,其实不然,前期工作也是极为重要的额,就像开发的时候如果目标不对的话,到后期后很迷的,所以一定要提前做好规划 ...

随机推荐

  1. python复习基础题目

    第一部分 必答题(每题2分) 简述列举了解的编程语言及语言间的区别? 编译型语言:一次性全部编译成二进制码,再去执行 解释性语言:编译一句,运行一句 python 解释型,简洁高效,容易上手 Java ...

  2. BZOJ5137&&lg4081(广义后缀自动机,set启发式合并)

    BZOJ5137&&lg4081(广义后缀自动机,set启发式合并) 题面 自己找去 HINT 给定多个文本串,让你查询每个文本串中有多少个本质不同的子串且这个子串只出现在当前这个文本 ...

  3. (ubuntu系统)安装opencv-python后,报错libSM.so.6: cannot open shared object file: No such file or directory

    这是我在 用云服务器跑python代码时候 遇到的问题  卡在这好长时间...希望对同样遇到这样窘境的小白们有所帮助 在控制台界面下,找不到cv2,,,, 解决办法 步骤一: 输入 sudo pass ...

  4. 疫情下的传统商企自救|4个Tips搭建销量过亿直播间

    新冠肺炎爆发以来,线下商企遭受巨大冲击.出于疫情防控需要,不少门店选择暂时停业:而消费者们更是响应号召.足不出户.这场疫情促使消费者的消费习惯和方式进一步转向线上订购转变,直播.短视频等领域逆势而起, ...

  5. 在bootstrap的column中的formatter里不能传递row参数吗?

    row 是一个对象  你需要把它转成字符串用JSON.stringify(row),这样就是字符串了,但是还有问题,你需要给加密一下encodeURI(JSON.stringify(row)),然后方 ...

  6. linux中Jenkins启动/重启/停止命令

    简要记录一下Linux 中Jenkins启动/重启/停止命令 启动service jenkins start1重启service jenkins restart1停止service jenkins s ...

  7. url 获取 geoserver 中对应的style

    http://userName:password@127.0.0.1:7093/geoserver/rest/workspaces/FAST/styles/AVG_RSRP.sld

  8. phpstorm更换主题

    打开PhpStorm,File -- Settings -- Editor -- Color Scheme --General选择你喜欢的风格进行更改,选择完成后单击Apply

  9. C/C++ Windows API——获取系统指定目录(转)

    原文地址:C/C++ Windows API——获取系统指定目录 经测试,在win10 VS2017中用wprintf()输出正常,SHGetSpecialFolderPath函数也正常运行 但是用M ...

  10. MAC MAMP集成环境安装 PHP 扩展

    MAC MAMP集成环境安装 PHP扩展 开发环境中,对于需要维护很多 WEB 站点,以及可能会使用到很多不同的 PHP 版本,集成环境比较好用,在MAC 上 MAMP 集成环境是比较好用的,但是在安 ...