Member 13798091 Ответов: 1

Почему произошло это исключение nullpointerexception?


Я пытаюсь передать два числа из двух editTexts(из MainActivity) К текстовому представлению во втором действии. Но я получаю NPE. Я получаю NPE в этой строке кода, когда печатаю:
основная деятельность:



class MainActivity : AppCompatActivity() {

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

    val number1 = idOf_editTextnumber1.text.toString()
    val number2 = idOf_editTextnumber2.text.toString()
    idOf_OpeninActvity2.setOnClickListener {
        val newIntentOfOpening = Intent(this, SecondActivity::class.java)
        newIntentOfOpening.putExtra("number1", number1)
        newIntentOfOpening.putExtra("number2", number2)
        startActivityForResult(newIntentOfOpening, 1)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == 1){
        if (resultCode == Activity.RESULT_OK){
            val intent3 = Intent()
            val result = intent3.extras?.getString("result")
            idOf_textViewOfResult.text = result
        }
        if (resultCode == Activity.RESULT_CANCELED){
            idOf_textViewOfResult.text = "Nothing selected"
        }
    }

}


The Second Activity:


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

   val intentNew = Intent()
   val number1 = intentNew.getIntExtra("number1",0)
   val number2 = intentNew.getIntExtra("number2",0)
   idOf_ShowingTwoNumbers.text = "Numbers: $number1, $number2"
   idOf_Adding.setOnClickListener {
       val result: Int  = number1 + number2
       val intent2 = Intent()
       intent2.putExtra("result", result)
       setResult(Activity.RESULT_OK, intent2)
       finish()
   }


Что я уже пробовал:

Я получаю NPE, когда пишу это:

val number1 = intentNew.extras!!.getString("number1")
val number2 = intentNew.extras!!.getString("number2")

Но:
Я получаю значение по умолчанию, когда пишу это:

val number1 = intentNew.getIntExtra("number1",0)
val number2 = intentNew.getIntExtra("number2",0)

Richard MacCutchan

Ваш intentNew выглядит так, как будто это новое намерение без содержания, поэтому нет никаких значений для двух меток, которые вы используете.

Member 13798091

Не могли бы вы пожалуйста, дайте мне пример.
Что же мне делать?
Я пробовал почти все, учитывая, что я следую наставнику.

1 Ответов

Рейтинг:
2

Kornfeld Eliyahu Peter

Кажется очевидным, что вызов метода Intent() ничего не возвращает...

val intentNew = Intent()

Вы можете пойти и отладить, почему...
Но также возможно, что Intent это класс и вы имели в виду его:
val intentNew = new Intent()


Member 13798091

У меня есть трезубец
intentNew вал = так()

Но то же самое
что же мне делать?
учитывая что я следую за репетитором

Kornfeld Eliyahu Peter

Что такое getIntent? Метод? Почему это лучше, чем намерение? в любом случае, если это метод, то просто следуйте за ним с помощью отладчика туда, где (и, вероятно, почему) он терпит неудачу...