Как конвертировать строку для редактирования текстового поля в Android в намерениях? - PullRequest
0 голосов
/ 04 июля 2018

Как преобразовать строку в EditText, я создаю EditText в одном действии, а затем выполняю второе действие, и я получаю этот текст редактирования через намерение в строке, затем
как назначить его для текста редактирования второго действия, но я не нахожу его, как назначить строку для текста редактирования. Здесь я использовал функцию go, которая используется, когда происходит событие onclick кнопки

This is my first activity

class MainActivity : AppCompatActivity() , View.OnClickListener{ 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text
        intent.putExtra("name",aa)
        startActivity(intent)
    }
}

This is my second activity

class Main2Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        var str=intent.getStringExtra("name").toString()
        et21.setText(str)
    }
}

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

В вашей первой функции перехода изменения активности, как показано ниже,

 fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text.toString()
        intent.putExtra("name",aa)
        startActivity(intent)
    }

Во втором упражнении измените последнюю строку onCreate, как показано ниже, вам нужно развернуть значение из обнуляемого типа. Что можно сделать с помощью блока let над типом nullable. Также я предполагаю, что et21 является ссылкой на текст редактирования и правильно инициализирован. Это решение абсолютно безопасно

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    intent.getStringExtra("name")?.let {
        et21.setText(it)
    }
}
0 голосов
/ 08 июля 2018
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    val extras:Bundle =intent.extras
    val nn=extras.getString("name")
    eT21.setText("${nn}")
}

Or

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main2)
    eT21.setText(intent.getStringExtra("name"))
}
0 голосов
/ 04 июля 2018

Это потому, что вы пытались установить charSequence на EditText, просто конвертируйте в String, получая значение из FirstEditText.

в вашем втором занятии -

  class Main2Activity : AppCompatActivity() {
                override fun onCreate(savedInstanceState: Bundle?) {
                    super.onCreate(savedInstanceState)
                    setContentView(R.layout.activity_main2)
                    intent.getStringExtra("name")?.let {
                     et21.setText(it)
                    }
                }
            }

Внутри вашего первого занятия

fun go(v:View){
        val intent=Intent(this@MainActivity,Main2Activity::class.java)
        var aa=EditText1.text.toString()
        intent.putExtra("name",aa)
        startActivity(intent)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...