启动新 Intent 时的 intent 状态附加功能

State of intent extras when launching new Intent

提问人:Kaita John 提问时间:6/9/2020 最后编辑:Kaita John 更新时间:6/10/2020 访问量:48

问:

我有一个主要活动 A 和一个不同的活动 B,我在 B 上执行操作并在附加功能中将 arrayList 返回给主活动 A。然后,我在 A 上启动一个 Filepicker 意图。通过启动 Filepicker 意图,数组列表是否因为 null 而额外?

anotherRow 是 ArrayList。

活动 B

 val intent = Intent(this, MainActivity::class.java)
    val bundle = Bundle()
    bundle.putSerializable(Constants.sendAdditionalRowsBack, anotherRow)
    intent.putExtras(bundle)
    startActivity(intent)
    finish()

主要活动

val bundle: Bundle? = intent.extras
    //The below will be done only if bundle is not null
    if (bundle != null) {
        returnedArray = bundle?.getSerializable(Constants.sendAdditionalRowsBack) as ArrayList<bring>
    }else{
        runOnUiThread {
            activity?.makeLongToast("Bundle is null")
        }
    }
Kotlin Android-intent nullPointerException

评论

0赞 RusArtM 6/9/2020
您能否提供一些关于如何在附加功能中返回数组列表的代码?
0赞 David Wasser 6/10/2020
要将数据返回给您,应启动 using 并处理 中的响应。这并不能回答您的问题,这只是一个观察。MainActivityActivityBstartActivityForResult()MainActivity.onActivityResult()
0赞 David Wasser 6/10/2020
什么时候发射,它完成了吗?在清单中声明了吗?如何启动文件选取器?MainActivityActivityBMainActivitylaunchMode="singleTop"

答:

0赞 Kaita John 6/10/2020 #1

这是最终奏效的

活动 B(发送)

 // intialize Bundle instance
    val b = Bundle()
    b.putSerializable("questions", anotherRow as Serializable?)
    val i = Intent(this, OneMainActivity::class.java)
    i.putExtras(b)
    startActivity(i)
    finish()

活动 A(接收)

    //get the bundle
    if (activity?.getIntent()?.extras != null) {
        val b = activity?.getIntent()?.extras
        if (b?.getSerializable("questions") as ArrayList<bring> != null) {
            returnedArray = (b!!.getSerializable("questions") as ArrayList<bring>?)!!
        } else {
            runOnUiThread {
                activity?.makeLongToast("An error occured")
            }
        }
    } else {
        runOnUiThread {
            //activity?.makeLongToast("An internal error occured")
        }
    }