【问题标题】:Can't get Extra data via Intent无法通过 Intent 获取额外数据
【发布时间】:2020-02-20 00:02:45
【问题描述】:

我正在尝试将额外的数据(字符串)放入一个意图中。我使用 startActivity 在另一边获取我的额外字符串数据。 但我不明白为什么它不起作用!这是我的代码: 这是我要从中解析额外数据的目标 Activity——Recipe Activity:

class RecipeActivity : AppCompatActivity() {
    for (k in 0..name_arr.size-1) {
        if(temp_arr[position]==name_arr[k]){
            //to parse the id number of the selected recipe by the user to the next activity
            val i = Intent(baseContext, ResRecActivity::class.java)
            i.putExtra("ItemPosition",k)
            startActivity(i)
        }
    }
}

这是成功解析额外数据的 Target Activity -- ResRecActivity :

class ResRecActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_res_rec)
        setSupportActionBar(toolbar)

        var posit : String = intent.getStringExtra("ItemPosition") //wanting to get the extra data 

        //BELOW LINE IS THE ERROR LINE
        *readJson(posit.toInt())* //Intending to parse the extra data in Integer datatype to readJson Function 
    }
}

我得到的错误是:

E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testarca/com.example.arca.ResRecActivity}: kotlin.KotlinNullPointerException
    Caused by: *kotlin.KotlinNullPointerException* 
        at com.example.arca.ResRecActivity.onCreate(ResRecActivity.kt:37) 

主要目标: 我只想将 Integer “位置”(在我的情况下为“k”)从“RecipeActivity”解析为“ResRecActivity”,以便在另一个名为“readJson”的函数中使用该整数位置作为参数功能。 我正在尝试使用 Intent 属性在活动之间进行处理来实现这一点。

注意:还给我一个类似的解决方案,使用意图将 ArrayList 数据从一个活动解析到另一个活动。

【问题讨论】:

    标签: android kotlin android-intent android-activity android-pendingintent


    【解决方案1】:

    当您使用i.putExtra("ItemPosition",k) 时,您将Int 添加到您的附加功能中。

    因此您必须使用getIntExtra 来检索它:

    val posit = intent.getIntExtra("ItemPosition", 0)
    

    【讨论】:

    • 谢谢。工作喜欢一种魅力。另外请告诉我如何使用意图解析 ArrayList,如果可以使用意图的话。
    【解决方案2】:

    第一

    替换这一行

    val i = Intent(baseContext, ResRecActivity::class.java)
    

     val i = Intent(this, ResRecActivity::class.java)
    

    第二

    你把Int放在intent中,所以你应该使用intent.getIntExtra("ItemPosition", -1)

    希望这会有所帮助。

    【讨论】:

    • 谢谢。工作喜欢一种魅力。另外请告诉我如何使用意图解析 ArrayList,如果可以使用意图的话。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多