Как открыть ту же активность с разными данными в Android Kotlin? - PullRequest
0 голосов
/ 31 октября 2019
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. Я хочу начать действие B с A, и когда B начнется, он отобразит строку TextView A в TextView_Main.

Теперь работает нормально. Я хочу снова начать действие B, нажав button_Run, который находится в действии B, и снова передав строку, которую я ввел в edittext действия B. И теперь она должна отображаться в textview действия B, когда она открывается. еще раз.

Пожалуйста, помогите мне сделать это.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

более понятно для запуска действия, как код ниже, добавьте этот код в 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"))

, поэтому каждый раз, когда вы начинаете действиеB, вы должныпередать строку

0 голосов
/ 31 октября 2019

Проблема заключается в том, что строка edittext сохраняется как дополнительная цель с именем MAINUSERKEY="MainActivity”, которая отличается от дополнительной, которую вы в настоящее время извлекаете на своей MainActivity, той, которая имеет имя USER_KEY="FirstActivity”. Поэтому я бы сделал что-то подобное, чтобы убедиться, что получаю правильную строку дополнительно:

str = with(intent) {
     getStringExtra(FirstActivity.USER_KEY) ?: getStringExtra(MainActivity.MAINUSERKEY) ?: "No string extra was found"
}
...