DEV Community

ownership903
ownership903

Posted on • Updated on

[Android Studio|Kotlin] Activity

1) Running sub activity from main activity
MainActivity(Button android:id="@+id/btnStart), SubActivity

[MainActivity.kt]

class MainActivity : AppCompatActivity() {

    val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        binding.btnStart.setOnClickListener{
            val intent = Intent(this, SubActivity::class.java)
            startActivity(intent)
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

2) Sending and receiving activity values
2-1) Pass values ​​from main to sub.

[MainActivity.kt]

class MainActivity : AppCompatActivity() {

    val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        binding.btnStart.setOnClickListener{
            val intent = Intent(this, SubActivity::class.java)
            intent.putExtra("from1", "hello Bundle")
            intent.putExtra("from2", 2020)
            startActivity(intent)
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

[activity_sub.xml ]

TextView android:id="@+id/to1"
TextView android:id="@+id/to2"
Enter fullscreen mode Exit fullscreen mode

[SubActivity.kt]

class SubActivity : AppCompatActivity() {
    val binding by lazy { ActivitySubBinding.inflate(layoutInflater) }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding) {
            to1.text = intent.getStringExtra("from1")
            to2.text = "${intent.getIntExtra("from2", 0) }"
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

2-2) Return the value to MainActivity.kt while exiting SubActivity.kt
https://developer.android.com/training/basics/intents/result
registerForActivityResult() * startActivityForResult is deprecated

[MainActivity.kt]

class MainActivity : AppCompatActivity() {

    val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
            if (result.resultCode == Activity.RESULT_OK) {
                val intent = result.data
                intent?.getStringExtra("returnValue")?.let { message ->
                    Toast.makeText(this, message, Toast.LENGTH_LONG).show()
                }
            }
        }
        binding.btnStart.setOnClickListener{
            val intent = Intent(this, SubActivity::class.java)
            intent.putExtra("from1", "hello Bundle")
            intent.putExtra("from2", 2020)
            startForResult.launch(intent) 
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

[activity_main.xml]

<androidx.constraintlayout.widget.ConstraintLayout
TextView android:id="@+id/textView2"
Button android:id="@+id/btnStart"
<androidx.constraintlayout.widget.ConstraintLayout
Enter fullscreen mode Exit fullscreen mode

[SubActivity.kt]

class SubActivity : AppCompatActivity() {
    val binding by lazy { ActivitySubBinding.inflate(layoutInflater) }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding) {
            to1.text = intent.getStringExtra("from1")
            to2.text = "${intent.getIntExtra("from2", 0) }"
            btnClose.setOnClickListener{
                val returnIntent = Intent()
                returnIntent.putExtra("returnValue", editMessage.text.toString())
                setResult(Activity.RESULT_OK, returnIntent)
                finish()
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

[activity_sub.xml]

<androidx.constraintlayout.widget.ConstraintLayout
TextView android:id="@+id/textView"
TextView android:id="@+id/to1"
TextView android:id="@+id/to2"
EditText android:id="@+id/editMessage"
Button android:id="@+id/btnClose"
<androidx.constraintlayout.widget.ConstraintLayout
Enter fullscreen mode Exit fullscreen mode

Latest comments (0)