Android 中使用 ComponentName 類
阿新 • • 發佈:2019-02-06
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點選開啟連結