val intent=Intent("com.example.activitytest.ACTION_START") //添加category(action只有一个category可以有多个) intent.addCategory("com.example.activitytest.MY_CATEGORY") startActivity(intent)
隐式Intent用法
1.调用系统浏览器
1 2 3
val intent=Intent(Intent.ACTION_VIEW) intent.data= Uri.parse("https://www.baidu.com") startActivity(intent)
2.调用电话
1 2 3
val intent=Intent(Intent.ACTION_DIAL) intent.data= Uri.parse("tel:10086") startActivity(intent)
向下一个活动传递数据
利用putExtra传入一个键值对
1 2 3 4
valdata="Hello SecondActivity" val intent=Intent(this,SecondActivity::class.java) intent.putExtra("extra_data",data) startActivity(intent)
利用getStringExtra接收数据传入“键”
1
val extraData=intent.getStringExtra("extra_data")
向上一活动返回数据
1.第一个活动中通过startActivityForResult启动活动
2.第二个活动构建要传输的数据
3.在第一个活动中重onActivityResult方法得到返回数据
1 2 3 4
myBinding.button1.setOnClickListener { val intent=Intent(this,SecondActivity::class.java) startActivityForResult(intent,1) }
1 2 3 4 5 6
button2.setOnClickListener { val intent= Intent() intent.putExtra("data_return","Hello FirstActivity!!!") setResult(RESULT_OK,intent) finish() }
1 2 3 4 5 6 7 8 9
overridefunonActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) when (requestCode) { 1 -> if (resultCode == RESULT_OK) { val returnData = data?.getStringExtra("data_return") Log.d("FirstActivity", "returned data is $returnData ") } } }
如果通过back键返回:
1 2 3 4 5 6
overridefunonBackPressed() { val intent= Intent() intent.putExtra("data_return","Hello FirstActivity") setResult(RESULT_OK,intent) finish() }
overridefunonSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) val tempData="Something you just typed" outState.putString("data_key",tempData) }
1 2 3 4 5 6 7 8
overridefunonCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) if(savedInstanceState!=null){ val tempData=savedInstanceState.getString("data_key") Log.d(TAG, "tempData is $tempData") } }