上节说到,Activity是什么;这次来了解了解Activity通信相关内容。
都知道,人与人交流产生许多不可预知的美。因为交流,信息得意传递;因为交流,任务得以完成;因为交流,生活才有滋有味。
废话少说,进入正题。
1.What is Intent?
在同一个应用程序中往往会使用Intent对象来指定一个Activity,intent 的汉语解释为意图、目的,为何是它,我也不知,但总要有一个表示,大家记住就好了。这个Intent在指定一个Activity后可以通过startActivity或者startActivityForResult来启动这个Activity。除此之外,它还可以调用其它应用程序中的Activity。功能不得不说很强大。
2.Can you showan example?
$1封装一个Activity
Intent myIntent= new Intent(this,YourClass.class);
$2传值
myIntent.putExtra(“name”,”jack”);
myIntent.putExtra(“no”,”001”);
myIntent.putExtra(“data”,jsonObject.toString);
$3启动
startActivity(myIntent);
$4新Activity怎样获取
Buddle bundle =getIntent.getExtras();
StringBuffer s=new StringBuffer();
s.append(bundle.getString(“name”));
s.append(bundle.getString(“no”));
s.append (bundle.getString(“data”))
3.信息传递是双向的,所以有去有回,那信息怎么回呢?
$1封装Activity方式与上面一样
$2启动
startActivityForResult(myIntent,R.layout.deal); //R.layout.deal为请求代码
$3接收
当关闭YourClass后,系统会调用Activity类的onActivityResult事件来获得deal的返回值。所以,需要在Main类中覆盖onActivityResult方法来获得deal的返回值。
@override
protected voidonActivityRequest(int requestCode, int resultCode, Intent data){
Switch(requestCode){
case R.layout.deal:
if(resultCode==20){
doSomething();
}else if(resultCode==21){
doSomething();
}
}
}
PS:有人可能要问resultCode从何而来?
这是startActivityForResult方法返回数据的机制决定的,当系统关闭当前Activity时会将Activity里面的值(比如说文本框的)保存在Intent对象中
getIntent().putExtra(“something”,someValue);
setResult(20,getIntent());
从这可以看到20返回值是带有结果的,那可想而知21返回值就不会带结果了
SetResult(21);
至此Activity间的通信基本了解清楚。
4.前面也说过Intent也可以调用其他应用程序中的Activity,那这里也举个例子吧
直接拨号的例子
Intent call =new Intent(Intent.ACTION_CALL,URI.parse(“tel:”+12345678));
startActivity(call);
当然Intent还有其他许多功能,欲知详情,建议各位查看android此类相关文档,这是最直接的学习方法,当然也枯燥,但收获良多,不过鉴于google的访问问题,大家还是翻墙吧。
下次将展开android消息提示的相关用法