首页 技术 正文
技术 2022年11月14日
0 收藏 805 点赞 5,126 浏览 6973 个字

https://blog.csdn.net/u012005313/article/details/47006689

使用Intent能够使程序在不同活动中跳转,意及能够使用不同界面。Intent用法分为显示和隐式

Intent概念:Intent是Android程序中各组件之间进行交互的一种重要方式,不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

Intent一般可被用于启动活动启动服务、以及发送广播等场景

##########################################################

前期准备工作

1.创建一个项目(IntentTest),使用一个默认的空的活动MainActivity

Android Studio Intent使用(显式、隐式)

2.修改activity_main.xml布局文件

  1.  <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  2.  xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent”
  3.  android:layout_height=”match_parent” android:paddingLeft=”@dimen/activity_horizontal_margin”
  4.  android:paddingRight=”@dimen/activity_horizontal_margin”
  5.  android:paddingTop=”@dimen/activity_vertical_margin”
  6.  android:paddingBottom=”@dimen/activity_vertical_margin” tools:context=”.MainActivity”>
  7.   
  8.  <Button
  9.  android:id=”@+id/button_1″
  10.  android:layout_width=”match_parent”
  11.  android:layout_height=”wrap_content”
  12.  android:text=”Button 1″
  13.  />
  14.   
  15.  </RelativeLayout>

2.新建一个活动SecondActivity

Android Studio Intent使用(显式、隐式)

Android Studio Intent使用(显式、隐式)

Activity Name = SecondActivity

Layout Name = activity_second

3.修改activity_second.xml布局文件

代码如下:

  1.  <?xml version=”1.0″ encoding=”utf-8″?>
  2.  <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  3.   android:layout_width=”match_parent” android:layout_height=”match_parent”>
  4.   
  5.   <Button
  6.   android:id=”@+id/button_2″
  7.   android:layout_width=”match_parent”
  8.   android:layout_height=”wrap_content”
  9.   android:text=”Button 2″
  10.   />
  11.   
  12.  </LinearLayout>

解释:定义一个按钮,按钮上文本显示为Button 2

4.修改SecondActivity.java类

代码如下:

  1.  public class SecondActivity extends Activity {
  2.   
  3.   @Override
  4.   protected void onCreate(Bundle savedInstanceState) {
  5.   super.onCreate(savedInstanceState);
  6.   requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏
  7.   setContentView(R.layout.activity_second);
  8.   }

5.在AndroidManifest.xml中为SecondActivity活动进行注册

在<application></application>之间加入

  1.   <activity
  2.   android:name=”.SecondActivity”
  3.   android:label=”@string/title_activity_second” >
  4.   </activity>

note:SecondActivity不是主活动,不需要配置<intent-filter>标签里的内容

##############################################

显示使用Intent

Intent有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?> cls)

该构造函数接收两个参数,第一个参数Context要求提供一个启动活动的上下文

第二个参数Class则是指定想要启动的目标活动

Activity类中提供了一个startActivity()方法,这个方法是专门用于启动活动,它接收一个Intent参数

我们将构建好的Intent传入startActivity()方法就可以启动目标活动

1.修改MainActivity类中按钮的点击事件

  1.   @Override
  2.   protected void onCreate(Bundle savedInstanceState) {
  3.   super.onCreate(savedInstanceState);
  4.   setContentView(R.layout.activity_main);
  5.   
  6.   Button button=(Button)findViewById(R.id.button_1);
  7.   button.setOnClickListener(new View.OnClickListener() {
  8.   @Override
  9.   public void onClick(View v) {
  10.   Toast.makeText(MainActivity.this, “You click Button 1”, Toast.LENGTH_SHORT).show();
  11.   Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  12.   startActivity(intent);
  13.   }
  14.   });
  15.   }

2.修改SecondActivity类中按钮的点击事件

  1.   @Override
  2.   protected void onCreate(Bundle savedInstanceState) {
  3.   super.onCreate(savedInstanceState);
  4.   requestWindowFeature(Window.FEATURE_NO_TITLE);
  5.   setContentView(R.layout.activity_second);
  6.   
  7.   Button button=(Button)findViewById(R.id.button_2);
  8.   button.setOnClickListener(new View.OnClickListener() {
  9.   @Override
  10.   public void onClick(View v) {
  11.   Toast.makeText(SecondActivity.this, “You Click Button 2”, Toast.LENGTH_SHORT).show();
  12.   finish();
  13.   }
  14.   });
  15.   }

点击运行按钮,截图如下:

Android Studio Intent使用(显式、隐式)

Android Studio Intent使用(显式、隐式)

程序生成后,手机出现界面1,点击button1按钮,界面跳转到界面2,点击button2,界面跳转会界面1

###########################################

隐式使用Intent

隐式Intent通过指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动去启动

1.修改AndroidManifest.xml文件,修改活动如下:

  1.   <activity
  2.   android:name=”.SecondActivity”
  3.   android:label=”@string/title_activity_second” >
  4.   <intent-filter>
  5.   <action android:name=”com.example.activitytest.ACTION_START” />
  6.   <category android:name=”android.intent.category.DEFAULT” />
  7.   </intent-filter>
  8.   </activity>

在<action>标签中指明当前活动可以响应com.example.activitytest.ACTION_START这个action,而<category>标签则包含了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还可能带有的category。

只有<action>和<category>中的内容同时能够匹配上Intent中指定的action和category,这个活动才能响应Intent

2.修改MainActivity类中按钮的点击事件

  1.   @Override
  2.   protected void onCreate(Bundle savedInstanceState) {
  3.   super.onCreate(savedInstanceState);
  4.   setContentView(R.layout.activity_main);
  5.   
  6.   Button button=(Button)findViewById(R.id.button_1);
  7.   button.setOnClickListener(new View.OnClickListener() {
  8.   @Override
  9.   public void onClick(View v) {
  10.   Toast.makeText(MainActivity.this, “You click Button 1”, Toast.LENGTH_SHORT).show();
  11.   //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  12.   Intent intent=new Intent(“com.example.activitytest.ACTION_START”);
  13.   startActivity(intent);
  14.   }
  15.   });
  16.   }

note: android.intent.category.DEFAULT是一种默认的category,在调用startActivity()方法的时候会自动将这个category添加到Intent中

点击运行按钮,程序成功运行

#######################################################3

ADD:每个Intent中只能指定一个action,但却能够指定多个category.

上述的Intent中只有一个默认的category,再增加一个测试一下

1.修改AndroidManifest.xml文件

  1.   <activity
  2.   android:name=”.SecondActivity”
  3.   android:label=”@string/title_activity_second” >
  4.   <intent-filter>
  5.   <action android:name=”com.example.activitytest.ACTION_START” />
  6.   <category android:name=”android.intent.category.DEFAULT” />
  7.   <category android:name=”com.example.activitytest.MY_CATEGORY” />
  8.   </intent-filter>
  9.   </activity>
  10.   </application>

2.修改MainActivity类中按钮的点击事件

  1.   Button button=(Button)findViewById(R.id.button_1);
  2.   button.setOnClickListener(new View.OnClickListener() {
  3.   @Override
  4.   public void onClick(View v) {
  5.   Toast.makeText(MainActivity.this, “You click Button 1”, Toast.LENGTH_SHORT).show();
  6.   //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  7.   Intent intent=new Intent(“com.example.activitytest.ACTION_START”);
  8.   intent.addCategory(“com.example.activitytest.MY_CATEGORY”);
  9.   startActivity(intent);
  10.   }

运行程序,成功

#################################################

隐式Intent的更多用法

使用隐式Intent,不仅可以启动自己程序内部的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的功能共享称为可能

例如:在应用程序中展示一个网页

修改MainActivity中按钮点击事件

  1.   button.setOnClickListener(new View.OnClickListener() {
  2.   @Override
  3.   public void onClick(View v) {
  4.   Toast.makeText(MainActivity.this, “You click Button 1”, Toast.LENGTH_SHORT).show();
  5.   //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  6.   //Intent intent=new Intent(“com.example.activitytest.ACTION_START”);
  7.   //intent.addCategory(“com.example.activitytest.MY_CATEGORY”);
  8.   
  9.   Intent intent=new Intent(Intent.ACTION_VIEW);
  10.   intent.setData(Uri.parse(“http://www.baidu.com”));
  11.   startActivity(intent);
  12.   }
  13.   });

程序中首先指定Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,其常量值为android.intent.action.VIEW.

然后通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去

此时重新运行程序,在MainActivity界面点击按钮就可以打开系统浏览器

Android Studio Intent使用(显式、隐式)

例如:在程序中调用系统拨号界面

修改MainActivity中按钮点击事件

  1.   Button button=(Button)findViewById(R.id.button_1);
  2.   button.setOnClickListener(new View.OnClickListener() {
  3.   @Override
  4.   public void onClick(View v) {
  5.   Toast.makeText(MainActivity.this, “You click Button 1”, Toast.LENGTH_SHORT).show();
  6.   //Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  7.   //Intent intent=new Intent(“com.example.activitytest.ACTION_START”);
  8.   //intent.addCategory(“com.example.activitytest.MY_CATEGORY”);
  9.   
  10.   Intent intent=new Intent(Intent.ACTION_DIAL);
  11.   intent.setData(Uri.parse(“tel:10086”));
  12.   startActivity(intent);
  13.   }
  14.   });

Intent.ACTION_DIAL是一个Android系统的内置动作

——————— 本文来自 编号1993 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u012005313/article/details/47006689?utm_source=copy

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,495
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,741
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298