将字符串传递给我的活动后,尝试在片段中获取它会导致空字符串
Posted
技术标签:
【中文标题】将字符串传递给我的活动后,尝试在片段中获取它会导致空字符串【英文标题】:After passing a string to my Activity, trying to get it in a fragment results in an empty string 【发布时间】:2020-10-19 12:26:50 【问题描述】:我通过这样的意图传递一个字符串:
val intent = Intent(this, RegistrationActivity::class.java)
intent.putExtra("mobile", user.mobile)
startActivity(intent)
然后我在我的 RegistrationActivity 中成功接收到这个。
private var mobile : String? = ""
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_registration_layout)
val intent = this.intent
val extras = intent.extras
mobile = extras?.getString("mobile")
fun getMobile(): String
return mobile!!
但是当我在 RegistrationActivity 中的片段中调用 getMobile() 时,我得到的只是一个空字符串:
val activity = RegistrationActivity()
val mobile = activity.getMobile()
【问题讨论】:
如何从 RegistrationActivity 调用片段? 我使用的是 NavHostFragmentRegistrationActivity()
为什么要手动实例化一个新的 Activity 实例?你永远不应该那样做。
【参考方案1】:
不要像那样创建activity
的实例,使用startActivity()
导航到activity
,它会创建它的一个实例。检查Activity lifecycle
由于您以错误的方式创建了activity
的实例,onCreate()
将不会调用,mobile
将是初始值。
这是一个如何从fragment
访问activity
的示例:
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
super.onViewCreated(view, savedInstanceState)
val mobile = (activity as? RegistrationActivity)?.getMobile()
【讨论】:
以上是关于将字符串传递给我的活动后,尝试在片段中获取它会导致空字符串的主要内容,如果未能解决你的问题,请参考以下文章