Android开发学习笔记 via Google Developers (5) - Interaction of activities

来源:互联网 发布:c 控制台界面编程 编辑:程序博客网 时间:2024/06/05 20:28

Activites之间是靠Intent来相互通信和启动的,通常是在Activities里首先构造一个Intent,说明源Act(一般是this)和目标Act,放进去参数 putExtras(),然后用这个Activity.startActivity来启动。这个一般用来启动自己的application里的Activity。



如果想从别的Activity获得结果,用startActivityForResult()来启动Activity,并实现protected void onActivityResult(int requestCode, int resultCode, Intent data) 获得结果,其中requestCode是startActivityForResult中传递过去的,用于辨识是否是自己发出的Intent请求所启动Activity返回的结果。


相反,如果返回给其他Activity结果,用setResult(Intent resultIntent)来返回,显示的可以用finish()来结束当前的Activity,如果用<back>按钮返回,则为Cancel(虽然也会获得结果)。



另外一种方式是通过IntentFilter 来获得启动,主叫方Activity通过构造一个Intent=new Intent(ActionFilterName)到系统里寻找注册这个Filter的Application's activity。如果被叫Activity是系统本身的,则ActionFilterName就是一个系统内置名称,例如Intent.ACTOIN_DIAL,构造不同的Intent(启动不同的Application)需要提供不同的数据。


所以自己的程序如果向被其他的程序通过这种方式启动,就可以在相应的IntentFilter里写上ActionName。


如果有多个activity的IntentFilter相应,系统会提供列表来让用户选择。在程序里也可以用

Intent chooser = Intent.createChooser(intent, title);
startActivity(chooser);

来让用户选择。





原创粉丝点击