通过Intent的Component属性来启动另一个Activity

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

Intent的Component属性要接受一个ComponentName对象,ComponentName对象包含如下几个构造器:

上面构造器本质就是一个,即创建一个ComponentName需要指定包名和类名,这样就可唯一确定一个组件类。下面通过一个简单的实例来演示,代码如下:

FirstActivity

package com.lovo.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;
import android.widget.EditText;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btn = (Button) findViewById(R.id.activity_main_btn);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// 创建一个ComponentName对象
				// 方式一
				// ComponentName comp=new
				// ComponentName(MainActivity.this,SecondActivity.class);

				// 方式二:第一个参数为当前应用的包名。第二个参数为跳转组件的类路径
				ComponentName comp = new ComponentName("com.lovo.activity",
						"com.lovo.activity.SecondActivity");
				Intent intent = new Intent();
				// 为Intent设置Component属性
				intent.setComponent(comp);
				startActivity(intent);
			}
		});
	}
}


SecondActivity:

package com.lovo.activity;

import android.app.Activity;
import android.content.ComponentName;
import android.os.Bundle;
import android.widget.EditText;

public class SecondActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		EditText show = (EditText) findViewById(R.id.second_et);
		// 获取该Activity对应的Intent的Component属性
		ComponentName comp = getIntent().getComponent();
		// 显示ComponentName对象的包名、类名
		show.setText("组件包名:" + comp.getPackageName() + "\n组件类名为:"
				+ comp.getClassName());
	}
}


 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u010142437

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值