Aactivity-----Intent显式和隐式

用途:活动之间跳转;Intent是Android中组件之间交互的方式,不仅可以指明当前组件要想执行的动作,还可以在不同组件之间传递数据,一般用于启动活动,启动服务,发送广播

显式Intent:意图明显
修改FirstActivity中的点击事件

  Button button1=findViewById(R.id.button);
        //注册监听器,执行监听器中的onClick()方法
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //第一个参数指的是上下文,第二个参数指的是启动的目标活动
               Intent intent=new Intent(MainActivity.this,SecondActivity.class);
               //启动活动的方法
                startActivity(intent);
            }
        });

隐式Intent:他不明确指出我们想要启动哪一个活动,而是指定了一些列更为抽象的action和category等信息,交给系统分析并帮我们找出合适的活动去启动。

<activity>标签下配置<intent-filter>内容,可以指定当前活动能够响应的action和category

 <activity android:name=".SecondActivity">
            <!--同时匹配才能响应-->
            <intent-filter>
                <!--<action>指明当前活动可以响应com.example.activitytest.ACYION_STRAT这个action-->
                <action android:name="com.example.activitytest.ACTION_START"/>
                <!--<category>包含一些附加信息,更精确的指明当前活动能够响应的Intent中还可能带有的category-->
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>


        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

修改FirstActivity中的点击事件

 Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.example.activitytest.ACTION_START");
                startActivity(intent);
            }
        });

android.intent.category.DEFAULT是一种默认的category,在调用开启活动的方法时会自动将这个category添加到Intent中。
每个Intent只能指定一个action,可以指定多个category。
在Intent增加category

<activity android:name=".SecondActivity">
            <!--同时匹配才能响应-->
            <intent-filter>
                <!--<action>指明当前活动可以响应com.example.activitytest.ACYION_STRAT这个action-->
                <action android:name="com.example.activitytest.ACTION_START"/>
                <!--<category>包含一些附加信息,更精确的指明当前活动能够响应的Intent中还可能带有的category-->
                <category android:name="android.intent.category.DEFAULT"/>
                <!--自定义category-->
                <category android:name="android.intent.category.MY_CAGEGORY"/>
            </intent-filter>
        </activity>
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent("com.example.app.ACTION_START");
                intent.addCategory("android.intent.category.MY_CAGEGORY");
                startActivity(intent);
            }
        });

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值