Android 中使用 ComponentName 类

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点击打开链接

你可能感兴趣的:(Android 中使用 ComponentName 类)