【Android开发】Activity的启动方式

显示启动

    Intent it = new Intent(this, DialogActivity.class);
    startActivity(it);

启动当前应用里普通的Activity。

隐式启动

隐式启动的传参方式是相当灵活的,在编译期间不会发生错误,可以打开很多不属于该应用的Activity(系统Activity)。

隐式启动系统Activity
	//参数1:action,是Activity的别名
	//参数2:Uri对象,打开的路径,通过协议来具体确定打开什么Activity
    Intent it = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.imooc.com"));
    startActivity(it);
隐式启动普通Activity
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="abc" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    Intent it = new Intent("abc");
    startActivity(it);
startActivityForResult

有返回值的调用Activity

第一个Activity
class LearnActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_learn)

        val it2 = Intent(this, LearnActivity2::class.java)
        //参数1:intent 
        //参数2:requestCode:用来区别该结果是来自于哪个Activity
        startActivityForResult(it2, 1000)
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        // resultCode: 0 RESULT_CANCEL 取消
        // resultCode: -1 RESULT_OK 正确处理完后返回
        Log.e("Tag", "resultCode$requestCode")
    }
}
第二个Activity
class LearnActivity2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_learn2)

        // 设置结果
        val it = Intent() //此时的意图不作为跳转界面使用,而是用来传递数据
        it.putExtra("myMsg", "message")
        //参数1:结果码,在上一个界面的onActivityResult方法中通过resultCode获取
        //参数2:意图对象,主要作用:放数据,在上一个界面的onActivityResult中通过data的获取
        setResult(RESULT_OK, it)
        finish()
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值