Intent可以非常方便的启动其他组件。
前提:所有的Activity都需要在AndroidManifest.xml文件中注册,即加上这两句话:
<activity android:name=".sonactivity1"> </activity>
1 启动Activity,包括两种方式,显示启动和隐式启动。一般将代码写在MainActivity.java文件中的button的点击事件函数中
显示启动:
//显示启动 Intent intent=new Intent(MainActivity.this,sonactivity1.class); startActivity(intent); /*Intent的第一个参数是上下文,即该代码所在的文件,第二个参数是接受Intent的目标组件, 简单来说就是需要启动的子Activity的class类(一般来说就是子Activity的java文件)*/
隐式启动:
//隐式启动 Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com.hk")); startActivity(intent); /*Uri.parse(urlString)把一个字符串解释成Uri对象,ACTION_VIEW是Intent需要执行的动作*/
2获取Activity返回值
(1)以Sub-Activity的方式启动子Activity,一般在MainActivity.java文件的button的点击事件函数中
显示启动:
//显示启动子Activity int SUBACTIVITY1=1; //需定义在onCreate函数外面 Intent intent=new Intent(this,SubActivity1.class); startActivityForResult(intent,SUBACTIVITY1); /*startActivityForResult(Intent,requestCode)函数,参数Intent决定启动哪个Activity 参数,参数requestCode是请求码,父Activity通过请求码来确定是哪一个子Activity返回的*/
隐式启动:
//隐式启动子Activity int SUBACTIVITY2=2; Uri uri=Uri.parse("content://contacts/people"); Intent intent=new Intent(Intent.ACTION_PICK,uri); startActivityForResult(intent,SUBACTIVITY2);
(2)设置子Activity的返回值,在子Activity的类中,subActivity1.java文件中,onCreate()函数里面的button点击事件函数中
Uri data=Uri.parse("tel:"+tel_number);//数据以Uri的形式返回给父Activity Intent intent=new Intent(null,data); intent.putExtra("address","JD Street");//额外信息 //第一个参数,结果码,第二个返回值,返回值封装在Intent中 setResult(RESULT_OK,intent); //如果什么都不想返回的话,setResult(RESULT_CANCELED,null) finish();
(3)在父Activity中获取返回值,在MainActivity.java文件中和onCreate()函数是并列关系
private static final int SUBACTIVITY1=1; //需定义成全局的,即所有的函数外面,class里面 private static final int SUBACTIVITY2=2; @override public void onActivityResult(int requestCode,int resultCode,Intent data)//请求码,返回状态,返回的数据 { super.onActivityResult(requestCode,resultCode,data); switch(requestCode){ //对请求码进行匹配 case SUBACTIVITY1: if(resultCode==Activity.RESULT_OK) { Uri uridata=data.getData();//获取uri数据 } else if(resultCode==Activity.RESULT_CANCELED) { } break; //不要忘记break case SUBACTIVITY2: if(resultCode==Activity.RESULT_OK) { Uri uridata=data.getData();//获取uri数据 } break; } }
具体实例可以查看组件通信1-课本
注意:子activity需要extends Activity