Не удается получить дополнительные данные через намерение - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь добавить дополнительные данные (строку) в намерение. Я использую startActivity, чтобы получить дополнительные строковые данные на другой стороне. Но я не могу понять, почему это не работает! Вот мой код: Это целевое действие, откуда я хочу проанализировать свои дополнительные данные - Рецептное задание:

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)
        }
    }
}

Это целевое действие для успешного анализа дополнительных данных - - 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"position" (в моем случае "k") из "RecipeActivity" в "ResRecActivity", чтобы использовать эту целочисленную позицию в другой функции с именем "read Json" в качестве параметра функции , И я пытаюсь добиться этого, используя свойство Intent для обработки между действиями.

Примечание: Также дайте мне аналогичное решение для анализа ArrayList данных из одного действия в другое с помощью намерения.

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Когда вы используете i.putExtra("ItemPosition",k), вы добавляете Int в свои дополнения.

Поэтому вы должны использовать getIntExtra, чтобы получить его:

val posit = intent.getIntExtra("ItemPosition", 0)
0 голосов
/ 20 февраля 2020

Первый

заменить эту строку

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

на

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

Второй

Вы положили Int в умысел, поэтому вам следует использовать intent.getIntExtra("ItemPosition", -1)

Надеюсь, это поможет.

...