1. 程式人生 > >Android 中使用 ComponentName 類

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點選開啟連結