Intent的CompentName

类层次结构图:

 

什么是Intent?

Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。可以理解为它是一个信使。当然,也可以将Intent视为一个在不同组件之间仁慈的消息,这个消息在到达接收组件后,接收组件会执行相关的操作。它使得Android系统中互相独立的应用程序组件,成为一个可以互相通信的组件组件集合。因此,无论这些组件是否在同一个应用程序中,Intent 可以将一个组件的数据和动作仁慈给另一个组件

主要常见的用途:1、启动Activity和Service  2、在Android系统上发布广播消息

 

Intent的组成:

动作:Action

数据:Data

分类:Category

类型:Type

组件:Component

扩展信息:Extra

 

首先来看Intent的Component属性:

Component可以用来查找组件,我们可以根据setComponent()、setClass()、setClassName()来设置组件的名称。通过getComponet(ComponetName componetName)来获取组件

先来看下ComponetName类:

构造函数:

public ComponentName(String pkg,String cls)

参数说明:

pkg:包名

cls:完整类名

      ComponentName componentName = new ComponentName(

            "com.jiahui.activity", "com.jiahui.activity.MyActivity");

            Intent intent = new Intent();

public ComponentName (Context pkg,String cls)

参数说明:

pkg:应用程序上下文

cls:类名(必须是完整的类名,也就是包名+类名)

ComponentName componentName = new ComponentName(

                 MainActivity.this, "com.jiahui.activity.MyActivity");

           Intent intent = new Intent();

public ComponentName (Context pkg,Class<?> cls)

参数说明:

pkg应用程序上下文

cls:类名    

    ComponentName componentName = new ComponentName(

            MainActivity.this, MyActivity.class);

public ComponentName (Parcel in)

 

实例:Intent_ComponetDemo

点击按钮跳转到另外一个Activity获取到组件包名称和类名称显示在另外一个Activit里的文本框中

 

 

代码:

[java]  view plain copy print ?
  1. package com.jiahui.activity;  
  2.   
  3.    
  4.   
  5. import android.app.Activity;  
  6.   
  7. import android.content.ComponentName;  
  8.   
  9. import android.content.Intent;  
  10.   
  11. import android.os.Bundle;  
  12.   
  13. import android.view.View;  
  14.   
  15. import android.view.View.OnClickListener;  
  16.   
  17. import android.widget.Button;  
  18.   
  19.    
  20.   
  21. public class MainActivity extends Activity {  
  22.   
  23.        private Button myBtn;  
  24.   
  25.        public void onCreate(Bundle savedInstanceState) {  
  26.   
  27.               super.onCreate(savedInstanceState);  
  28.   
  29.               setContentView(R.layout.main);  
  30.   
  31.               myBtn = (Button) findViewById(R.id.myBtn);  
  32.   
  33.               //注册事件  
  34.   
  35.               myBtn.setOnClickListener(new OnClickListener() {  
  36.   
  37.                      public void onClick(View v) {  
  38.   
  39.    
  40.   
  41.                             // 通过上下文和类名创建ComponetName  
  42.   
  43.                             ComponentName componentName = new ComponentName(  
  44.   
  45.                                           MainActivity.this, MyActivity.class);  
  46.   
  47.                             // 通过包名和类名创建ComponetName  
  48.   
  49.                             // ComponentName componentName = new ComponentName(  
  50.   
  51.                             // "com.jiahui.activity", "com.jiahui.activity.MyActivity");  
  52.   
  53.                             // Intent intent = new Intent();  
  54.   
  55.                             // 通过上下文和类名创建ComponetName  
  56.   
  57.                             // ComponentName componentName = new ComponentName(  
  58.   
  59.                             // MainActivity.this, "com.jiahui.activity.MyActivity");  
  60.   
  61.                             Intent intent = new Intent();  
  62.   
  63.                             // 通过Intent的setComponet指定组件名称  
  64.   
  65.                             intent.setComponent(componentName);                
  66.   
  67.                             // 启动Activity  
  68.   
  69.                             startActivity(intent);  
  70.   
  71.    
  72.   
  73.                      }  
  74.   
  75.               });  
  76.   
  77.    
  78.   
  79.        }  
  80.   
  81. }  



 

 

MyActivity:

[java]  view plain copy print ?
  1. package com.jiahui.activity;  
  2.   
  3.    
  4.   
  5. import android.app.Activity;  
  6.   
  7. import android.content.ComponentName;  
  8.   
  9. import android.content.Intent;  
  10.   
  11. import android.os.Bundle;  
  12.   
  13. import android.widget.EditText;  
  14.   
  15.    
  16.   
  17. public class MyActivity extends Activity {  
  18.   
  19.    
  20.   
  21.        private EditText myEditText;  
  22.   
  23.    
  24.   
  25.        protected void onCreate(Bundle savedInstanceState) {  
  26.   
  27.               super.onCreate(savedInstanceState);  
  28.   
  29.               setContentView(R.layout.myactivity);  
  30.   
  31.               myEditText = (EditText) findViewById(R.id.editTxt);  
  32.   
  33.               Intent intent = this.getIntent();// 获得Intent  
  34.   
  35.               // 获得组件名称对象  
  36.   
  37.               ComponentName componentName = intent.getComponent();  
  38.   
  39.               // 获得包名称  
  40.   
  41.               String pkgName = componentName.getPackageName();  
  42.   
  43.               // 获得类名称  
  44.   
  45.               String clsName = componentName.getClassName();  
  46.   
  47.    
  48.   
  49.               // 显示在文本框中  
  50.   
  51.               myEditText.setText("组件包名称" + pkgName + "\n" + "类名称" + clsName);  
  52.   
  53.    
  54.   
  55.        }  
  56.   
  57. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值