您的位置:首页 > 其它

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

2013-06-23 23:11 399 查看
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());
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: