• 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

  • 相关阅读:
    软件工程课程总结
    c++第五次作业
    软件工程第四次作业
    c++第四次作业
    软件工程第三次作业
    c++第三次作业
    软件工程基础第二次作业
    c++第二次作业
    c++第一次作业
    软件工程基础第一次作业
  • 原文地址:https://www.cnblogs.com/loyolh/p/9975872.html
Copyright © 2020-2023  润新知