ch3
使用intent启动另一个activity
| binding.button1.setOnClickListener { |
| val intent = Intent(this, MainActivity2::class.java) |
| startActivity(intent) |
| } |
启动另一个activity并传输数据
| |
| binding.button1.setOnClickListener { |
| val intent = Intent(this, MainActivity2::class.java) |
| intent.putExtra("DataName","Data") |
| startActivity(intent) |
| } |
| |
| class MainActivity2 : AppCompatActivity() { |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val binding = ActivityMain2Binding.inflate(layoutInflater) |
| setContentView(binding.root) |
| val extraData = intent.getStringExtra("DataName") |
| Log.d("SecondActivityLog", "extra data is ${extraData.toString()}") |
| } |
使用Bundle在Activity中传数据
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val binding = ActivityMainBinding.inflate(layoutInflater) |
| setContentView(binding.root) |
| binding.button1.setOnClickListener { |
| val intent = Intent(this, MainActivity2::class.java) |
| |
| val bundle:Bundle = Bundle() |
| bundle.putString("DataName","Data") |
| bundle.putInt("bundleIntValue",1000) |
| intent.putExtras(bundle) |
| startActivity(intent) |
| } |
| |
| override fun onCreate(savedInstanceState: Bundle?) { |
| super.onCreate(savedInstanceState) |
| val binding = ActivityMain2Binding.inflate(layoutInflater) |
| setContentView(binding.root) |
| |
| |
| val bundle: Bundle? = intent.extras |
| Log.d("SecondActivityLog", "extra data is ${bundle?.getString("DataName")}") |
| Log.d("SecondActivityLog", "extra data is ${bundle?.getInt("bundleIntValue")}") |
| } |
启动另一个Activity以后返回数据
使用Activity Result API
再见!onActivityResult!你好,Activity Results API! - 知乎 (zhihu.com)
我们首先要在MainActivity1中定义requestDataLauncher
同时定义返回的接受代码
| private val requestDataLauncher = |
| registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> |
| if (result.resultCode == RESULT_OK) { |
| result.data?.let { it -> |
| it.getStringExtra("FromMA2")?.let { it1 -> Log.d("MainActivityBack", it1) } |
| it.getIntExtra("Number", 0).let { it1 -> Log.d("MainActivityBack", it1.toString()) } |
| } |
| } |
| } |
启动MainActivity使用requestDataLauncher
| |
| binding.button1.setOnClickListener { |
| val intent = Intent(this, MainActivity2::class.java) |
| val bundle: Bundle = Bundle() |
| bundle.putString("DataName", "Data") |
| bundle.putInt("bundleIntValue", 1000) |
| intent.putExtras(bundle) |
| |
| requestDataLauncher.launch(intent) |
MainActivity2返回代码
| binding.button2.setOnClickListener { |
| val bundle2: Bundle = Bundle() |
| |
| bundle2.putString("FromMA2", "RETURN") |
| bundle2.putInt("Number", 2233) |
| intent.putExtras(bundle2) |
| setResult(RESULT_OK, intent) |
| finish() |
| } |
Activity活动获得Fragment对象
在Activity执行Fragment的方法
| val fragmentManager = supportFragmentManager |
| val viewFragment=fragmentManager.findFragmentById(binding.picFrag.id) as ViewFragment |
| viewFragment.changePoint(a, b) |
Fragment获得Activity活动
| val mainActivity = activity as MainActivity |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)