如何在 Android Kotlin 中打开具有不同数据的相同 Activity?
How to open same Activity with different data in Android Kotlin?
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)
}
}
}
大家好!我是 Android 使用 Kotlin 编程的新手。
我有两个活动,假设 A 和 B。我想从 A 开始 activity B,当 B 开始时,它会将 A 的 TextView
字符串显示到 TextView_Main
.
现在工作正常。我想通过单击 Activity B 上的 button_Run
并再次传递我在 Activity B 的 edittext
中输入的字符串再次启动 activity B。并且现在它应该显示在 Activity B 的 textview
上,当它再次打开时。
请帮我做这个。
问题是 edittext
字符串被存储为名称为 MAINUSERKEY="MainActivity”
的 intent extra,这与您当前在 MainActivity
上提取的 extra 不同,一个名字为 USER_KEY="FirstActivity”
。所以我会做这样的事情来确保我得到正确的额外字符串:
str = with(intent) {
getStringExtra(FirstActivity.USER_KEY) ?: getStringExtra(MainActivity.MAINUSERKEY) ?: "No string extra was found"
}
像下面代码这样启动Activity就更清楚了,在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 时都应该传递字符串
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)
}
}
}
大家好!我是 Android 使用 Kotlin 编程的新手。
我有两个活动,假设 A 和 B。我想从 A 开始 activity B,当 B 开始时,它会将 A 的 TextView
字符串显示到 TextView_Main
.
现在工作正常。我想通过单击 Activity B 上的 button_Run
并再次传递我在 Activity B 的 edittext
中输入的字符串再次启动 activity B。并且现在它应该显示在 Activity B 的 textview
上,当它再次打开时。
请帮我做这个。
问题是 edittext
字符串被存储为名称为 MAINUSERKEY="MainActivity”
的 intent extra,这与您当前在 MainActivity
上提取的 extra 不同,一个名字为 USER_KEY="FirstActivity”
。所以我会做这样的事情来确保我得到正确的额外字符串:
str = with(intent) {
getStringExtra(FirstActivity.USER_KEY) ?: getStringExtra(MainActivity.MAINUSERKEY) ?: "No string extra was found"
}
像下面代码这样启动Activity就更清楚了,在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 时都应该传递字符串