如何在 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 时都应该传递字符串