Получить нулевой от намерения - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь передать две строки из AddNote в MainActivity.Но это становится нулевым.Невозможно начать действие (MainActivity)

java.lang.IllegalStateException: callingIntent.getStringExtra("intentTitle") must not be null  
class MainActivity : AppCompatActivity() {

    private val notes = arrayListOf<Note>()

    private val db by lazy {
        Room.databaseBuilder(this
            ,NoteDatabase::class.java
            ,"NoteDatabase.db")
        .allowMainThreadQueries()
            .build() }

    lateinit var adapter: adapter

    lateinit var title: String
    lateinit var content: String

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

        notes.addAll(db.dao().getNotes())

        AddNote.setOnClickListener {
            val i = Intent(this@MainActivity,AddNote::class.java)
            startActivity(i)
        }

        // startActivity(Intent(this, AddNote::class.java))

        val callingIntent = intent

        title = callingIntent.getStringExtra("intentTitle")
        content = callingIntent.getStringExtra("intentContent")

        val note = Note(title,content)

        val id = db.dao().insert(note)
        note.id = id.toInt()

        notes.add(note)

        adapter = adapter(notes, db)
        rootView.layoutManager = LinearLayoutManager(this)
        rootView.adapter = adapter
    }

    override fun onResume() {
        super.onResume()
        notes.clear()
        notes.addAll(db.dao().getNotes())
        adapter.notifyDataSetChanged()
    }
}


class AddNote : AppCompatActivity() {

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

        var intentTitle = "Title"
        var intentContent = "Content"

        saveNote.setOnClickListener {

            intentTitle = addTitle.text.toString()
            intentContent = addContent.text.toString()

        }

        val i = Intent()

            i.putExtra("title",intentTitle)
            i.putExtra("content",intentContent)

            startActivity(i)
    }
}

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Вы должны начать деятельность, как это ...

val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("key", value)
startActivity(intent)
0 голосов
/ 23 марта 2019

Вы должны поместить код, который начинается MainActivity внутри saveNote.setOnClickListener:

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

    var intentTitle = "Title"
    var intentContent = "Content"

    saveNote.setOnClickListener {
        intentTitle = addTitle.text.toString()
        intentContent = addContent.text.toString()
        val i = Intent(this, MainActivity::class.java)
        i.putExtra("title",intentTitle)
        i.putExtra("content",intentContent)
        startActivity(i)
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...