web-dev-qa-db-ja.com

kotlinでアクティビティから別のアクティビティに値を渡す方法

私はAndroid開発のためにKotlinを学んでいるので、hello worldのような基本的なプログラムと、あるアクティビティから別のアクティビティにナビゲートする方法を試しています。これには問題はありません。

私の懸念は、あるアクティビティから別のアクティビティに移動するときはうまくいきますが、アクティビティ間で値を渡す方法がわかりません。

あるアクティビティで値を設定し、それが機能しない別のアクティビティで取得するのにうんざりしていました。

以下のコードスニペットをご覧ください

これは、編集テキストおよび設定からインテントにユーザー名とパスワードを取得する主なアクティビティです。

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);
    }
}

}

これは、メインアクティビティから値を受け取る必要がある2番目のアクティビティです。

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")

    }
}

私がKotlinでこれを行う他の方法があるかどうかにかかわらず、意図しない限り、これを行う方法を教えてください。

15
Jeyaseelan

私は携帯電話を使用しています。自分でテストする必要があります。

CharSequenceStringMainActivityにしようとすると、CharSequenceではなくStringを挿入します。次に例を示します。

var userName = username.text.toString()
var password = password_field.text.toString()
7
holi-java

HomeActivityから値を送信

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

ProfileActivityで値を取得する

val profileName=intent.getStringExtra("Username")
16
Sudip Sadhukhan

Kotlinでは、インテントを使用するだけでデータを渡すことができます。データを直接インテントに入れるか、それらのデータをバンドルに書き込み、インテントを使用してそのバンドルを別のアクティビティに送信できます。

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);
3
AaRiF

インテントとバンドルを使用して、あるアクティビティから別のアクティビティにデータを送信できます。

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

最初にこれを行う必要があります、

_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")
_
2
Muhammed Haris
    //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)
0
Love kothari