今天来学习下Intent的component的用法
Intent是在作为Activity之间传递数据的组件,通过intent将数据封装起来,传递到你需要传递的activity中,再在目标Activity中获取到,进行使用
之前没有用过component,一直使用的最简洁的方式来的
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
String s = "This is a Test.";
intent.putExtra("id", s);
intent.setClass(MainActivity.this, MyActivity.class);
startActivity(intent);
}
});
在目标Activity中获取 传递过去的数据:
TextView text = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
String str = intent.getStringExtra("id");
text.setText(str);
现在使用components来做这件事
有两种方式:
ComponentName com = new ComponentName(MainActivity.this,MyActivity.class);//first
ComponentName com = new ComponentName("com.example.testcomponent","com.example.testcomponent.MyActivity");//second
第二种方式的第二个参数必须写全包名,不然会报错的
一样的,主Activity中:
button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent();
ComponentName com = new ComponentName(
"com.example.testcomponent",
"com.example.testcomponent.MyActivity");
intent.setComponent(com);
String s = "This is a Test.";
intent.putExtra("id", s);
startActivity(intent);
}
});
在目标Ativity中获取数据和上面是一样的,但是,在目标Activity中就可以获取到源目标,知道是从哪儿传递过来的:
text = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
String str = intent.getStringExtra("id");
ComponentName com = intent.getComponent();
String pkgName = com.getPackageName();
String className = com.getClassName();
text.setText(str + "\n" + pkgName + "\n" + className);