Как передать значения из activity в другое activity в kotlin

поскольку я изучаю Kotlin для разработки android, я теперь пробую основные программы , такие как hello world и как переходить от одного вида деятельности к другому виду деятельности, в этом нет проблем

меня беспокоит, когда я переходить от одной деятельности к другой деятельности, он работает нормально, но я не знаю как передать значения между

Я устал устанавливать значения в одном действии и извлекать в другом действии он не работает

см. фрагмент кода ниже

Это моя основная деятельность, где я беру имя пользователя и пароль из текста редактирования и настройки в intent

class MainActivity : AppCompatActivity() {
    val userName = null
    val password = null
    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button.setOnClickListener {
        val intent = Intent(this@MainActivity,SecondActivity::class.java);
        var userName = username.textø
        var password = password_field.text
        intent.putExtra("Username", userName)
        intent.putExtra("Password", password)
        startActivity(intent);
    }
}

}

Это моя вторая деятельность, где я должен получать значения от основной деятельности

class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        var strUser: String = intent.getStringExtra("Username")
        var strPassword: String = intent.getStringExtra("Password")
        user_name.setText("Seelan")
        passwor_print.setText("Seelan")

    }
}

пожалуйста, направьте меня, как это сделать, если у меня есть другой способ сделать это в Котлине, если не намеренно

спасибо заранее

6 ответов


Я на мобильном телефоне, вы должны проверить самостоятельно.

попробуйте сделать CharSequence до String на MainActivity , вы поставили CharSequence, а не String, например:

var userName = username.text.toString()
var password = password_field.text.toString()

отправить значение из HomeActivity

val intent = Intent(this@HomeActivity,ProfileActivity::class.java)
intent.putExtra("Username","John Doe")
startActivity(intent)

получить значения в ProfileActivity

val profileName=intent.getStringExtra("Username")

в Котлине вы можете передать данные, просто используя намерения. Вы можете напрямую поместить свои данные в intent или записать эти данные в пакет и отправить этот пакет другому действию с помощью intent.

val intent = Intent(this@HomeActivity,ProfileActivity::class.java);
intent.putExtra("profileName", "John Doe")
var b = Bundle()
b.putBoolean("isActive", true)
intent.putExtras(b)
startActivity(intent);

вы можете просто использовать intents и bundle для отправки данных из одного действия в другое действие.

val intent = Intent(this@OneActivity,TwoActivity::class.java);
intent.putExtra("username", userName)
startActivity(intent);

во-первых, вы должны сделать это,

var userName = username.text.toString()
var password = password_field.text.toString()

добавить зависимость Anko.

 implementation "org.jetbrains.anko:anko:0.10.4"

информация, проходящая внутри MainActivity() как

startActivity<SecondActivity>("Username" to userName,"Password" to password )

получить информацию из SecondActivity() есть

val profileName=intent.getStringExtra("Username")

    //On Click on Button 

    var but = findViewById<Button>(R.id.buttionActivity_two) as Button

            but.setOnClickListener {
    //Define intent 
                var intent = Intent(applicationContext,MainActivity::class.java)
// Here "first" is key and 123 is value                
intent.putExtra("first",123)
                startActivity(intent)

            }

        }

// If Get In Into Other Activity
var Intent1: Intent
Intent1= getIntent()
//Here first is key and 0 is default value
      var obj :Int  =  Intent1.getIntExtra("first",0);
      Log.d("mytag","VAlue is==>"+obj)