Android项目之HomeHealth基础学习3:Intent使用Component
2014-12-21 09:35
453 查看
Intent是在作为Activity之间传递数据的组件,通过intent将数据封装起来,传递到你需要传递的activity中,再在目标Activity中获取到,进行使用
之前没有用过component,一直使用的最简洁的方式来的
[java] view
plaincopy
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中获取 传递过去的数据:
[java] view
plaincopy
TextView text = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
String str = intent.getStringExtra("id");
text.setText(str);
![](http://img.my.csdn.net/uploads/201212/09/1355032781_1487.png)
![](http://img.my.csdn.net/uploads/201212/09/1355032800_3699.png)
现在使用components来做这件事
有两种方式:
[java] view
plaincopy
ComponentName com = new ComponentName(MainActivity.this,MyActivity.class);//first
ComponentName com = new ComponentName("com.example.testcomponent","com.example.testcomponent.MyActivity");//second
第二种方式的第二个参数必须写全包名,不然会报错的
一样的,主Activity中:
[java] view
plaincopy
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中就可以获取到源目标,知道是从哪儿传递过来的:
[java] view
plaincopy
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);
![](http://img.my.csdn.net/uploads/201212/09/1355032854_5595.png)
那项目中用到的component,是在显示出九宫格之后,通过click监听事件,获取用户的点击事件,然后通过component调用九宫格中对应的bpm,dfu,hrs等程序,具体代码在AppAdapter.java中红色字体部分:
之前没有用过component,一直使用的最简洁的方式来的
[java] view
plaincopy
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中获取 传递过去的数据:
[java] view
plaincopy
TextView text = (TextView)findViewById(R.id.text);
Intent intent = getIntent();
String str = intent.getStringExtra("id");
text.setText(str);
![](http://img.my.csdn.net/uploads/201212/09/1355032781_1487.png)
![](http://img.my.csdn.net/uploads/201212/09/1355032800_3699.png)
现在使用components来做这件事
有两种方式:
[java] view
plaincopy
ComponentName com = new ComponentName(MainActivity.this,MyActivity.class);//first
ComponentName com = new ComponentName("com.example.testcomponent","com.example.testcomponent.MyActivity");//second
第二种方式的第二个参数必须写全包名,不然会报错的
一样的,主Activity中:
[java] view
plaincopy
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中就可以获取到源目标,知道是从哪儿传递过来的:
[java] view
plaincopy
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);
![](http://img.my.csdn.net/uploads/201212/09/1355032854_5595.png)
那项目中用到的component,是在显示出九宫格之后,通过click监听事件,获取用户的点击事件,然后通过component调用九宫格中对应的bpm,dfu,hrs等程序,具体代码在AppAdapter.java中红色字体部分:
public View getView(int position, View convertView, ViewGroup parent) { //当convertView不为空的时候直接重新使用convertView从而减少了很多不必要的View的创建,然后加载数据。增强性能,减少view创建的时间 View view = convertView; if (view == null) { //载入xml的layout view = mInflater.inflate(R.layout.feature_icon, parent, false); final ViewHolder holder = new ViewHolder(); holder.view = view; holder.icon = (ImageView) view.findViewById(R.id.icon); holder.label = (TextView) view.findViewById(R.id.label); view.setTag(holder); } final ResolveInfo info = mApplications.get(position); final PackageManager pm = mPackageManager; final ViewHolder holder = (ViewHolder) view.getTag(); holder.icon.setImageDrawable(info.loadIcon(pm)); holder.label.setText(info.loadLabel(pm).toString().toUpperCase(Locale.US)); holder.view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Intent intent = new Intent(); <span style="color:#ff0000;"> //在该应用程序中启动另外一个应用程序 intent.setComponent(new ComponentName(info.activityInfo.packageName, info.activityInfo.name)); intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); mContext.startActivity(intent);</span> } }); return view; }
相关文章推荐
- Android项目之HomeHealth基础学习2:Service
- Android项目之HomeHealth基础学习1:Baseadapter
- Android项目之HomeHealth基础学习2:Service
- Android项目之HomeHealth基础学习2:Service
- android基础学习(5)-------Toast的使用
- Android的intent:基础概念以及显示/隐式使用Intent && 通过intent返回结果
- android开发学习---基础知识学习、如何导入已有项目和开发一个电话拨号器
- android学习中关于Textview,Button,EditText,连接的设置,Intent,Activity不同状态等的一系列基础知识点
- 【Ant学习】 使用ant打包android项目
- android基础学习(10)-------pandingIntent
- Android基础学习 - 项目进行前基础:
- android学习之使用Intent
- Android基础学习之Intent
- Intent的使用—android基础知识1
- Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
- Android基础—使用IntentService
- Android学习13--使用Intent和IntentFilter进行通信
- Android基础学习-----创建第一个Android项目HelloWorld(二)
- cocos2d-x学习之旅(五):1.5 使用eclipse编译cocos2d-x示例项目,创建cocos2d-x android项目并部署到真机
- Android开发之基本组件学习-----------Intent的使用