Android编程知识点3-Intent

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

转载于:https://www.cnblogs.com/loyolh/p/9975872.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值