class FirstActivity : AppCompatActivity() {
companion object{
val USER_KEY="FirstActivity"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first)
button_firstActivity.setOnClickListener {
val string:String=textView_first.text.toString()
val intent=Intent(this,MainActivity::class.java)
intent.putExtra(USER_KEY,string)
startActivity(intent)
}
}
}
class MainActivity : AppCompatActivity() {
companion object{
val MAINUSERKEY="MainActivity"
var str:String=""
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
str=intent.getStringExtra(FirstActivity.USER_KEY)
textview_main.text=str
button_Run.setOnClickListener {
val edittextstring=editText1.text.toString()
val intent=Intent(this,MainActivity::class.java)
intent.putExtra(MAINUSERKEY,edittextstring)
startActivity(intent)
}
}
}
大家好!我是Kotlin的Android编程新手。
我有两个活动,假设A和B。我想从A开始活动B,并且当B开始时,它将在TextView
中显示A的TextView_Main
字符串。
现在工作正常。我想通过单击活动B上的button_Run
并再次传递在活动B的edittext
中输入的字符串来再次启动活动B。现在,当打开时,它应该显示在活动B的textview
上再次。
请帮助我做到这一点。
问题是edittext
字符串被存储为名称为MAINUSERKEY="MainActivity”
的意图附加内容,这与您当前在MainActivity
上提取的名称为USER_KEY="FirstActivity”
的附加内容不同。所以我会做这样的事情,以确保额外获得正确的字符串:
str = with(intent) {
getStringExtra(FirstActivity.USER_KEY) ?: getStringExtra(MainActivity.MAINUSERKEY) ?: "No string extra was found"
}
更清楚地将startActivity像下面的代码一样,在ActivityB中添加此代码
companion object{
private const val EXTRA_ MAIN_USERKEY = "EXTRA.MAIN_USERKEY"
fun getIntent(context:Context, userKey:String): Intent
{
val intent = Intent(context,ActivityB::class.java)
intent.putExtra(EXTRA_ MAIN_USERKEY, userKey)
return intent
}
}
以及ActivityA中的此代码:
startActivity(ActivityB.getIntent(this,"some key"))
因此,每次启动activityB时,您都应该传递字符串