私は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でこれを行う他の方法があるかどうかにかかわらず、意図しない限り、これを行う方法を教えてください。
私は携帯電話を使用しています。自分でテストする必要があります。
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")
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);
インテントとバンドルを使用して、あるアクティビティから別のアクティビティにデータを送信できます。
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)