【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()
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42020386/article/details/112802146