android中Intent学习笔记

安卓中Intent学习笔记


假设现在已经有了 FirstActivity和SecondActivity 2个活动 并且在AndroidManifest已经注册了

清单文件

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".FirstActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".SecondActivity">

        </activity>
    </application>

至于如何进行跳转的逻辑设定,你们自己进行设计。

显示跳转

在点击事件的时候执行,比较简单

        btn_b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // 参数一时当前活动的引用,第二个参数是要跳转的活动的字节码文件
                Intent intent = new Intent(FirstActivity.this,
                        SecondActivity.class);
                startActivity(intent);
            }
        });

隐示跳转

1.使用默认的category

AndroidManifest.xml 的application中需要跳转的activity中添加

        <activity android:name=".SecondActivity">
            <intent-filter >
                <action android:name="intent1"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

之后再

        //参数取  <action android:name="intent1"/>中的值
        Intent intent = new Intent("intent1");
        startActivity(intent);

2.使用自定义的category

AndroidManifest.xml 的application中需要跳转的activity中添加

        <activity android:name=".SecondActivity">
            <intent-filter >
                <action android:name="intent1"/>
                <!-- 一定要加下面的default 不然报错 -->
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="cc" />
            </intent-filter>
        </activity>

之后再

        //参数取  <action android:name="intent1"/>中的值
        Intent intent = new Intent("intent1");
        intent.addCategory("cc");
        startActivity(intent);

3.调用系统的intent

        Button btn =  (Button) findViewById(R.id.b);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse("https://www.baidu.com"));
                startActivity(intent);
            }
        });

        Button btn2 =  (Button) findViewById(R.id.b2);
        btn2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:110"));
                startActivity(intent);
            }
        });

使用intent的传递数据

1.简单的传递

修改我们上面写的代码

                // 参数一时当前活动的引用,第二个参数是要跳转的活动的字节码文件
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

                intent.putExtra("d1", "d1");

                startActivity(intent);

在SecondActivity中添加,这句话就是得到启动SecondActivity的intent,然后取出数据,根据不同数据类型采用不同的get方法,自己可以查看

        Intent i =getIntent();
        String s = i.getStringExtra("d1");

2.结束活动传递数据到开启结束活动的活动里

原来都是 活动A 跳到 活动B

如果 B 结束了 根本无法和A 产生关联,所以用下面这个方法去启动B,在B活动中设置一个回调函数,当结束的时候会调用A中的方法

并且传入数据

                // 参数一时当前活动的引用,第二个参数是要跳转的活动的字节码文件
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);

                intent.putExtra("d1", "d1");

//              startActivity(intent);


                startActivityForResult(intent, 1);//采用这个方法去启动活动

重写act的一个方法

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
        case 1:

            if(resultCode == RESULT_OK){
                String stringData = data.getStringExtra("d2");
                Log.d("=", stringData);
            }

            break;
        default:
            break;
        }
    }

在SecondAct中添加btn并给他添加事件,之后插入下面代码

                Intent intent = new Intent();
                intent.putExtra("d2", "d2");

                setResult(RESULT_OK,intent);

                finish();//摧毁act 相当于back键

其实可以复写back按键的方法 如下

    @Override
    public void onBackPressed() {
        //代码和上面一样,只是重写了 back 返回键的方法
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值