android中可以使用Intent时 可以用setClass() 还可以使用ComponentName
Java 代码
package com.huawei;
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 Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//组件名称,第一个参数是包名,也是主配置文件Manifest里设置好的包名
第二个是类名,要带上包名
ComponentName com = new ComponentName("com.huawei", "com.huawei.Test1");
Intent intent = new Intent();
//设置部件
intent.setComponent(com);
Test.this.startActivity(intent);
}
});
}
}
经查看源码发现 Intent 的setClass() 方法的实现正是使用ComponentName 类:
public Intent setClass(Context packageContext,Class<?> cls){
mComponent=new ComponentName(packageContext,cls);
return this;
}
Intent 的 构造方法也是如此:
public Intent(Context packageContext,Class<?> cls){
mComponent=new ComponentName(packageContext,cls);
}
上面例子中的 setComponent()方法:
public Intent setComponent(ComponentName component){
mComponent =component;
return this;
}
以上可以看出无论那种方法调用的都是相似的代码;
参考:http://hellorheaven.iteye.com/blog/860193点击打开链接