最近看了一篇文章,把Android划分成为一个王国,主要为分为以下
- Activity : 美女,所有可以展示的UI全部由她来渲染与起舞;
- Service : 劳模,总是在后台默默的为我们服务,绝对一流的劳模;
- ContentProvider : 档案馆,这里可以提供数据的接口,来共享数据;
- BroadCastReceiver : 广播电台,忽然想起了小时候农村的高音大喇叭:村民们注意了,村民们注意了,下午来生产队开会了...
- Intent : 物流公司,信差
- SDK : 屠龙刀
- IDE : 倚天剑,正所谓:倚天屠龙在手,天下无敌!
双十一刚过,我们还是来说说这个强大的物流运输公司吧
- Intent作为信使,包含以下一组信息
- Component Name:组件名称
- Action:动作,行为
- Data:数据,URI
- Category:种类,类型
- Extras:附加数据
- Flags
- Activity-->Activity(Service)
// 内部类
classMyOnclickListenerimplementsView.OnClickListener{
@Override
publicvoid onClick(View view){
switch(view.getId()){
case R.id.btn_activity:
Intent intent =newIntent();
intent.setClass(MainActivity.this,OtherActivity.class);
intent.putExtra("name","ZhangSan");
Bundle bundle =newBundle();
bundle.putInt("age",12);
bundle.putString("address","北京朝阳双龙南里18-1701");
intent.putExtra("bundle", bundle);
startActivity(intent);
break;
}
}
}
接收方
Intent intent = getIntent();
Bundle bundle = intent.getBundleExtra("bundle");
tv_show.setText("name:"+ intent.getStringExtra("name")+"\n"+
"age:"+ bundle.get("age")+"\n"+"address:"+ bundle.get
("address"));
- 带结果的返回
- startActivityForResult
privatestaticfinalint REQUEST_CODE =1001;
......
Intent intentResult =newIntent(OtherActivity.this,ResultActivity.class);
startActivityForResult(intentResult, REQUEST_CODE);
- 复写onActivityResult方法
@Override
protectedvoid onActivityResult(int requestCode,int resultCode,Intent
data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE){
if(resultCode == RESULT_OK){
tv_result.setText(data.getStringExtra("result"));
}
}
- 在另一Activity设置返回结果,必须在finish前
Intent intent = getIntent();
intent.putExtra("result","我是Activity的结果");
setResult(RESULT_OK,intent);
// RESULT_OK 是Activity的常量finish();
- 调用系统的方式(发短信)
findViewById(R.id.btn_sendSMS).setOnClickListener(newView
.OnClickListener(){
@Override
publicvoid onClick(View view){
Intent intent =newIntent();
intent.setData(Uri.parse("smsto:10086"));
intent.setAction(Intent.ACTION_SENDTO);
intent.putExtra("sms_body","10086,你好,我是测试发送的短信");
startActivity(intent);
}
});
- 调用系统的方式(打开通讯录,选择电话号码后返回)
Intent intent =newIntent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
在onActivityResult中获取
if(requestCode == PICK_CONTACT_REQUEST){
Cursor cursor =null;
if(resultCode == RESULT_OK){
Uri uri = data.getData();
ContentResolver resolver = getContentResolver();
if(uri !=null){
cursor = resolver.query(uri,newString[]{ContactsContract.Contacts.DISPLAY_NAME},null,null,
null);
}
String name =null;
if(cursor.moveToFirst()){// True if the cursor is not empty
int columnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
name = cursor.getString(columnIndex);
et_contacts.setText(name);
}
}
}
时间: 2024-11-08 22:24:08