将字符串传递到我的 Activity 后,尝试将其放入片段中会导致空字符串
After passing a string to my Activity, trying to get it in a fragment results in an empty string
我通过这样的意图传递一个字符串:
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()
不要像那样创建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()
}
我通过这样的意图传递一个字符串:
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()
不要像那样创建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()
}