【问题标题】:Accessing data return by onActivityResult in onCreate function在 onCreate 函数中访问 onActivityResult 返回的数据
【发布时间】:2020-02-22 09:30:55
【问题描述】:

在 Android/Kotlin 中,我在 onCreate 函数中使用 startActivityForResult 启动了一个新活动,并在 onCreate 函数之外从 onActivityResult 获取返回的变量(我们称之为 X)。随后我想访问 onCreate 函数中的变量 X 以将其显示在屏幕上。但是,它永远不会将数据显示为

关于我可能做错了什么的任何想法?谢谢

这里是代码。当用户单击 notesView 时,它会启动一个新活动 (Notes2Activity),用户可以在其中全屏输入其笔记。然后在验证笔记后,代码返回到我试图编辑 NotesView 的内容以返回笔记的上一个活动,但应用程序崩溃了。

override fun onCreate(savedInstanceState: Bundle?) 
{
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_new_contact)

val notesView: TextView
notesView = findViewById<TextView>(R.id.inputNotes)

notesView.setOnClickListener {
            val intent = Intent(this, Notes2Activity::class.java)
            startActivityForResult(intent,2)}}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (resultCode == Activity.RESULT_OK) {
            if(data != null) {
                val returnNotes: String = data.getSerializableExtra("notesEntered") as String
                var returnNotesInputs = returnNotes
                notesView.setText("")
                notesView.append(returnNotes)
                Log.d(TAG, "note returned to newContactActivity is: $returnNotes")}}
        else if (resultCode == Activity.RESULT_CANCELED) 
        {Log.d(TAG, "user clicked canceled in Notes2Activity")}
}

【问题讨论】:

  • 需要显示您的代码以查找错误或错误。

标签: android kotlin oncreate onactivityresult


【解决方案1】:

您可以将数据保存在全局类字段中,然后在活动上调用recreate()。这实际上将在活动上再次调用onCreate(),然后您可以使用字段中的数据。

IMO,这是处理这种情况的不好方法。来自onCreate() 的具体逻辑可以导出到私有函数。然后你可以从onActivityResult()onCreate() 调用这个私有函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2010-11-30
    • 2021-10-28
    • 2014-09-25
    • 2019-06-15
    相关资源
    最近更新 更多