Android Studio--Intent启动活动
2016-03-13 16:40
423 查看
本文承接Android Studio–使用Toast
Intent使用分为显式Intent和隐式Intent。我们首先创建一个SecondActivity活动
1.创建布局activity_second.xml
2.新建活动SecondActivity
3.在AndroidManifest文件中进行活动的注册,由于不是主活动,所以注册十分简单
在主活动中button2按钮点击时启动活动,代码如下:
效果如下:
![](http://img.blog.csdn.net/20160313165337692)
在AndroidManifest文件中进行SecondActivity的活动配置
< action >这个标签中我们指明了当前活动能够相应com.example.firstapp.ACTION_START这个action,而< category >标签则包含了一些附加的信息,更精确的指明了当前的活动能够响应的Intent还可能带有的category。只有< action >和< category >内容同时匹配Intent中的action和category时,这个活动才能响应该Intent。
我们这里不对button2进行修改,而是给button3添加点击事件。
这里使用的是Intent的另一个构造函数,直接将action的字符串传了进去,表明我们想要启动的是能够响应com.example.firstapp.ACTION_START这个action的活动,而category使用的是默认的category
每个Intent只允许一个action,但是允许有多个category,所以我们可以采用addCategory()方法为Intent添加category。代码如下:
修改后没有活动能够响应该Intent,我们需要对SecondActivity进行修改,使其可以响应该Intent,修改如下:
效果如下:
![](http://img.blog.csdn.net/20160313180335909)
使用setData()方法接受一个Uri对象,用于指定当前Intent正在操作的数据,这些数据通常都是以字符串的形式传入Uri.parse()方法中解析产生的。这里调用系统浏览器打开网站。
效果如下:
一、概述
Intent可以进行各组件之间的交互,不仅可以指明当前组件想要执行的操作,还可以在不同的组件之间传递数据。Intent一般可被用于启动活动、启动服务、以及发送广播等场景,本文主要关注启动活动。Intent使用分为显式Intent和隐式Intent。我们首先创建一个SecondActivity活动
1.创建布局activity_second.xml
<?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"> <EditText android:hint="Write something ..." android:layout_margin="3dp" android:background="@drawable/textbg" android:layout_width="fill_parent" android:alpha="20" android:singleLine="false" android:layout_height="300sp" /> </LinearLayout>
2.新建活动SecondActivity
package com.example.firstapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Window; public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_second); } }
3.在AndroidManifest文件中进行活动的注册,由于不是主活动,所以注册十分简单
<activity android:name=".SecondActivity"> </activity>
二、显式Intent的使用
Intent构造函数重载之一Intent(Context packageContext,Class < ? >cls)。第一个参数Context是提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数可以构建出Intent的“意图”。在主活动中button2按钮点击时启动活动,代码如下:
Button bt2 = (Button) findViewById(R.id.button2); bt2.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent=new Intent(MainActivity.this,SecondActivity.class);//构造Intent对象 startActivity(intent);//启动活动 } });
效果如下:
三、隐式Intent
Intent隐式使用指定了一系列更加抽象的action和category等信息,然后由系统去分析这个Intent,并且帮主我们找出合适的活动去启动。在AndroidManifest文件中进行SecondActivity的活动配置
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="android.intent.action.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
< action >这个标签中我们指明了当前活动能够相应com.example.firstapp.ACTION_START这个action,而< category >标签则包含了一些附加的信息,更精确的指明了当前的活动能够响应的Intent还可能带有的category。只有< action >和< category >内容同时匹配Intent中的action和category时,这个活动才能响应该Intent。
我们这里不对button2进行修改,而是给button3添加点击事件。
Button bt3=(Button)findViewById(R.id.button3); bt3.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent =new Intent("com.example.firstapp.ACTION_START"); startActivity(intent); } });
这里使用的是Intent的另一个构造函数,直接将action的字符串传了进去,表明我们想要启动的是能够响应com.example.firstapp.ACTION_START这个action的活动,而category使用的是默认的category
每个Intent只允许一个action,但是允许有多个category,所以我们可以采用addCategory()方法为Intent添加category。代码如下:
Button bt3=(Button)findViewById(R.id.button3); bt3.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent =new Intent("android.intent.action.ACTION_START"); intent.addCategory("com.example.firstapp.MY_CATE"); startActivity(intent); } });
修改后没有活动能够响应该Intent,我们需要对SecondActivity进行修改,使其可以响应该Intent,修改如下:
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="android.intent.action.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="com.example.firstapp.MY_CATE"/> </intent-filter> </activity>
效果如下:
三、更多隐式Intent的使用
这里添加button4按钮,方便操作。Button bt4=(Button)findViewById(R.id.button4); bt4.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent =new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("https://www.so.com")); startActivity(intent); } });
使用setData()方法接受一个Uri对象,用于指定当前Intent正在操作的数据,这些数据通常都是以字符串的形式传入Uri.parse()方法中解析产生的。这里调用系统浏览器打开网站。
效果如下:
相关文章推荐
- android 开发中常见问题合集(持续更新)
- Android Callable Future FutureTask学习
- Android6.0系统权限
- Android 屏幕保持唤醒
- Android工程师入门(二)——不忙不累怎么睡。。
- Android电源管理之一:基础概览
- 唤醒锁: 检测 Android* 应用中的 No-Sleep(无法进入睡眠)问题
- Android 自定义滑动容器View(2)
- AndroidStudio 中使用 百度地图 <二> 百度地图的使用,个人摘要
- Android查找方法所在的包快捷键
- Android LayoutInflater详解
- 在Android应用中使用SQLite数据库的方法
- Android获取SD卡上所有图片、视频缩略图和音乐专辑封面
- 【android】怎么压缩和缓存图片?告诉你正确的姿势
- 反编译android_apk
- Android 最火的快速开发框架XUtils
- android学习第二周_布局优化技巧及列表控件_学习笔记
- 单机搭建Android开发环境(二)
- Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline
- Android应用界面开发_学习笔记_第三周