OnActivityResult сбой приложения kotlin

KenDubzify спросил: 03 февраля 2018 в 12:18 в: android

Я создаю базовый генератор meme и имею проблемы, возвращающие измененный текст в основное действие. На данный момент, когда я запускаю приложение, я могу щелкнуть значок редактирования в углу, и он приведет меня к активности selectionScreen. Здесь вы можете редактировать текст для верхнего и нижнего значений. Также отображается URL-адрес изображения из mainActivity. Это предназначено для работы таким образом, чтобы пользователи могли вводить свой собственный URL-адрес и получать изображение, на которое они хотят применить текст, но я нигде не близок к решению этой проблемы. Когда пользователь нажимает значок сохранения, он должен вернуть измененный текст и применить его к отображаемому изображению. На данный момент это просто сбой моего приложения. Это позволяет вернуться к mainActivity, если я прокомментирую мои два значения в onActivityResult, но, очевидно, без внесенных изменений.

код выглядит следующим образом: MainActivity:

package com.example.willo.memegene
import android.app.Activity
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundleimport android.support.v7.app.AlertDialog.*
import android.view.Menu
import android.view.MenuItem
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_selection_screen.*class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)        val url = 
"http://i.dailymail.co.uk/i/pix/2016/03/18/15/324D202500000578-3498922-
image-a-33_1458315465874.jpg"       Picasso.with(this)
                .load(url)
                .into(imageView)
        edit.setOnClickListener{            val intent = Intent(this, SelectionScreen::class.java).apply {
                putExtra("When nothing works", (topText.text.toString()))
                putExtra("And then it all works", 
(bottomText.text.toString()))
                putExtra("URL", url )
            }            startActivityForResult(intent,1)
        }   }    override fun onActivityResult(requestCode: Int, resultCode: Int, data: 
Intent?) {
       super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 1 && resultCode == Activity.RESULT_OK && data != 
null){            val returnedTop = intent.getStringExtra("Back to main")
            topText.setText(returnedTop)            val returnedBottom = intent.getStringExtra("Off with you")
            bottomText.setText(returnedBottom)        }
    }    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.user_options, menu)
        return super.onCreateOptionsMenu(menu)    }    override fun onOptionsItemSelected(item: MenuItem?): Boolean {        Builder(this)                .setTitle("About")
                .setMessage(" Name: MemeGene \n Author: Kenneth Willoughby 
\n " +
                        "Version: 1.0")
                .setPositiveButton(android.R.string.ok, null)
                .show()
        return super.onOptionsItemSelected(item)
    }}

Действие SelectionScreen:

package com.example.willo.memegeneimport android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_main.*import kotlinx.android.synthetic.main.activity_selection_screen.*
import kotlinx.android.synthetic.main.content_selection_screen.*class SelectionScreen : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_selection_screen)
        setSupportActionBar(toolbar)       val url = 
"http://i.dailymail.co.uk/i/pix/2016/03/18/15/324D202500000578-3498922-
image-a-33_1458315465874.jpg"        //Picasso.with(this)
               //.load(url)
             // .into(imageView2)        val topText = intent.getStringExtra("When nothing works")
            topText2.setText(topText)        val bottomText = intent.getStringExtra("And then it all works")
            bottomText2.setText(bottomText)        val link = intent.getStringExtra("URL")
            url2.setText(link)        save.setOnClickListener{
            val i = Intent(this, MainActivity::class.java).apply{
                putExtra("Back to main", topText2.text.toString())
                putExtra("Off with you", bottomText2.text.toString())
                putExtra("URL Again", url2.text.toString())            }            val returnIntent = this.intent
            returnIntent.putExtra("Results",i)
            setResult(Activity.RESULT_OK, returnIntent)
            finish()
        }        }    }

**EDIT**

Я исправил проблему, но теперь, когда пользователь выбирает сохранение виджет возвращает их в MainActivity.kt, но без текста. Исходный текст с твердым кодированием исчез, поэтому я знаю, что он возвращает что-то, чтобы исходные данные исчезли. Я не могу понять, почему я не могу заставить его передать текст, введенный в SelectionScreen.kt

0 ответов