Android笔记ch03

ch3

使用intent启动另一个activity

binding.button1.setOnClickListener {
val intent = Intent(this, MainActivity2::class.java)
startActivity(intent)
}

启动另一个activity并传输数据

// MainActivity1
binding.button1.setOnClickListener {
val intent = Intent(this, MainActivity2::class.java)
intent.putExtra("DataName","Data")
startActivity(intent)
}
// MainActivity2
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中传数据

// Activity1
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)
//intent.putExtra("DataName","Data")
val bundle:Bundle = Bundle()
bundle.putString("DataName","Data")
bundle.putInt("bundleIntValue",1000)
intent.putExtras(bundle)
startActivity(intent)
}
// Activity2
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()}")
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

// MainActivity1
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)
requestDataLauncher.launch(intent)

MainActivity2返回代码

binding.button2.setOnClickListener {
val bundle2: Bundle = 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
posted @   隔篁竹闻水声  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示