将字符串传递到我的 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()
}