展会信息港展会大全

从头学Android之机器人的意图之Intent的CompentName
来源:互联网   发布日期:2016-01-14 09:44:36   浏览:1919次  

导读:类层次结构图:什么是Intent?Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和仁慈的数据信息。可以理解为它是一个信使。当然,也可以将...

类层次结构图:

什么是Intent?

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

主要常见的用途:1、启动Activity和Service2、在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里的文本框中

代码:

view plainprint?

package com.jiahui.activity;

import android.app.Activity;

import android.content.ComponentName;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

private Button myBtn;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

myBtn = (Button) findViewById(R.id.myBtn);

//注册事件

myBtn.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

// 通过上下文和类名创建ComponetName

ComponentName componentName = new ComponentName(

MainActivity.this, MyActivity.class);

// 通过包名和类名创建ComponetName

// ComponentName componentName = new ComponentName(

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

// Intent intent = new Intent();

// 通过上下文和类名创建ComponetName

// ComponentName componentName = new ComponentName(

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

Intent intent = new Intent();

// 通过Intent的setComponet指定组件名称

intent.setComponent(componentName);

// 启动Activity

startActivity(intent);

}

});

}

}

MyActivity:

view plainprint?

package com.jiahui.activity;

import android.app.Activity;

import android.content.ComponentName;

import android.content.Intent;

import android.os.Bundle;

import android.widget.EditText;

public class MyActivity extends Activity {

private EditText myEditText;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.myactivity);

myEditText = (EditText) findViewById(R.id.editTxt);

Intent intent = this.getIntent();// 获得Intent

// 获得组件名称对象

ComponentName componentName = intent.getComponent();

// 获得包名称

String pkgName = componentName.getPackageName();

// 获得类名称

String clsName = componentName.getClassName();

// 显示在文本框中

myEditText.setText("组件包名称" + pkgName + "\n" + "类名称" + clsName);

}

}

摘自 jiahui524专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港