软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 互联网 -> Android学习笔记(10)——Intent基本运用 -> 正文阅读

[互联网]Android学习笔记(10)——Intent基本运用



作者:夏至 欢迎转载,也请保留这段申明,谢谢
    最近太忙了,都没什么时间来整理,前9个上传之后格式不对,都没好好整理,以后会抽空整理。

Android的通信桥梁 —— Intent 。


使用一个activity实在是太简单了,布局上也有限,那我们能不能像我们真机上的一样,一点就跳到另一个界面去了。这里我们就使用Intent,在活动中穿梭。至于为什么学着UI组件,突然跑到这个家伙来,那当然是为下一节做准备啦。除了活动,它还可以是服务或者广播。启动可以下列方法:
  • startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
  • startService(Intent)/bindService(Intent):来启动一个Service
  • sendBroadcast:发送广播到指定BroadcastReceiver

这里,我们就简单地用 Activity 来当例子,毕竟用得最多的就是活动了。

显式Intent与隐式Intent的区别


  • 显式Intent:
    通过组件名指定启动的目标组件,比如startActivity(new
    Intent(A.this,B.class));每次启动的组件只有一个。

  • 隐式Intent:
    不指定组件名,而指定Intent的Action,Data,或Category,当我们启动 组件时,会去匹配AndroidManifest.xml相关组件的Intent-filter,逐一匹配出满足属性的组件, 当不止一个满足时, 会弹出一个让我们选择启动哪个的对话框

1.1 显示Intent

首先,我们先新建一个布局,就叫做sec_linearlayout好了:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:orientation="vertical"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
    <Button
        android:id="@+id/btnBack"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按键测试"/>
</LinearLayout>

然后,我们再新建一个新activity,名字可以自己取,比如我的取为SencondActivity,让它继承Activity:
```java
public class SecondActivity  extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sec_linearlayout);
    }
}




<div class="se-preview-section-delimiter"></div>

最后,我们在AndroidManifest.xml,把我们新定义的activity包含进去。这里因为不是主activity。所以只要一行就可以了。如下:
[img]http://img.blog.csdn.net/20160331203059190
接下来就是在主Activity写程序了,由上面的 Intent(A.this,B.class))和startActivity(Intent)就可以了:
setContentView(R.layout.linearlayout);
Button button = (Button)findViewById(R.id.btnInter);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
 startActivity(intent);
    }
});




<div class="se-preview-section-delimiter"></div>

1.2 隐式Intent


传递数据给下一个活动
我们先来看一下AndroidManifest.xml文件中标签

[img]http://img.blog.csdn.net/20160331203409426
其中上图画圈圈的地方,就是我们隐式Intent最主要的东西了。
  • aciotn : 表示当前可以相应的活动,有且只有一个。
  • category:表示包含的一些附加信息,和相互配合,可以多个。

可以试试这个效果,先体验一下:
[img]http://img.blog.csdn.net/20160331203536067
这里我们假设一下,比如我们就让第二个activity浏览我们手机默认浏览器,并跳到百度。在事件开发中,我们不可能因为一个事件,而又重新去开发一个浏览器,这不实现,所以,我们可以调用系统的。修改如下:
<activity
android:name=".SecondActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>




<div class="se-preview-section-delimiter"></div>

效果如图:
[img]http://img.blog.csdn.net/20160331203726318
关于隐式Intent我们就先了解到这,先简单了解就行,后面我们再来深入研究。

1.3 多个活动之间传递数据


在启动活动时传递数据的思路其实很简单,Intent中提供了一系列 putExtra(string name,value)方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了,接收可以用:getStringExtra(string name
putExtra(string name,value):name为上下文键值,第二个为要传递的数据,支持多种类型
所以,主activity这样写:
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
    intent.putExtra("data","hello world");
    startActivity(intent);
}




<div class="se-preview-section-delimiter"></div>

第二个活动这样写
[img]http://img.blog.csdn.net/20160331204213117
这样,我们就完成了想下一个活动传递的功能了,当然了,不一定是字符串,可以是内容,文件数据等其他。
里我们使用了字符串,所以用getSringExtra()来接收,如果是整型,则用 getIntExtra(),如果是boolean 型,则用 getBooleanExtra(),以此类推。

返回数据给上一个活动


既然可以传数据给下一个活动,那么肯定能传递数据给上一个活动了。不过这里我们不再用startActivity(),而是用startActivityForResult()来启动活动。该方法接收两个参数,第一个还是Intent ,第二个是请求码。直接看代码:主activity:
button.setOnClickListener(new View.OnClickListener() {
@Override
    public void onClick(View v) {
    // Intent(A.this,B.class));
    Intent intent = new Intent(MainActivity.this,SecondActivity.class);
    startActivityForResult(intent,1);   
    }
});

由于我们使用startActivityForResult()来启动SecondActivity的,在SecondActivity被销毁之后会回调上一个活动的onActivityResult()方法,因为我们需要在MainActivity中重写这个方法来获取数据。
[img]http://img.blog.csdn.net/20160331204442993
这样,当第二个活动被销毁的时候,就能返回数据到onActivityResult()来,我们就能获数据了。
Intent 就暂时怎么多了,深入我们在进阶在来讲解。
不得不吐槽一下CSDN的图片粘贴的问题,每次都上传真心蛋疼,有谁支个招吗。。。。
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-01 16:55:16  
互联网 最新文章
C++11并发API总结
16.收款(AcceptingMoney)
数据链路层综述
IP协议及IP数据报解析
《浅谈HTTP协议》
计算机网络基础
LoadRunner和RPT之间关于手动关联和参数化的
HTTPS中的对称密钥加密,公开密钥加密,数字
上班需要打卡吗?(开通微信公众号--乘着风
ofbizjmsactivemq
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-17 14:35:36
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --