软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
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
生肖星座 三丰软件 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信
2017-7-24 10:33:57
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --