安卓的页面跳转

  1. 显式Intent
    //其中this代指FirstActivity作为上下文,而第二个参数为目标页面
    //SecondActivity::class.java相当于Java中SecondActivity.class
    //使用这种方式来启动Activity,Intent的“意图”非常明显,因此我们称之为显式Intent
    ​​​​​​​button1.setOnClickListener { 
        val intent = Intent(this, SecondActivity::class.java) 
        startActivity(intent) 
    }

     
  2. 隐式Intent
     
    /*
        它并不明确指出想要启动哪一个Activity,
        而是指定了一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,
        并帮我们找出合适的Activity去启动
    */
    
    
    //首先AndroidManifest.xml,添加如下代码
    <activity android:name=".SecondActivity" >
        <intent-filter>
            <action android:name="com.example.activitytest.ACTION_START" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    
    /*
        然后修改button1的点击事件
        由于android.intent.category.DEFAUL是一种默认的category 
        所以不需要我们额外指定category
    */
    button1.setOnClickListener {
        val intent = Intent("com.example.activitytest.ACTION_START")
        startActivity(intent)
    }
    
    //如果我们想要指定自定义的category,就需要用到addcategory()方法
    button1.setOnClickListener {
        val intent = Intent("com.example.activitytest.ACTION_START")
        intent.addCategory("com.example.activitytest.MY_CATEGORY")
        startActivity(intent)
    }
    
    //同时还需要在<intent-filter>中再添加一个category的声明,以免找不到指定category
    <activity android:name=".SecondActivity" >
        <intent-filter>
            <action android:name="com.example.activitytest.ACTION_START" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="com.example.activitytest.MY_CATEGORY"/>
        </intent-filter>
    </activity>
    
    

使用隐式Intent,不仅可以启动自己程序内的Activity,还可以启动其他程序的Activity
​​​​​​​例如,调用系统浏览器

/*
首先指定了Intent的action是Intent.ACTION_VIEW
然后通过Uri.parse()方法将一个网址字符串解析成一个Uri对像
再调用Intent的setData()方法将这个Uri对象传递进去
*/

button1.setOnClickListener {
    val intent = Intent(Intent.ACTION_VIEW)
    intent.data = Uri.parse("https://www.baidu.com")
    startActivity(intent)
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值