Android - การปิดเปิด Activity และส่งค่าถึงกัน


การสั่งเปิดหน้า registerActivity

Intent intent = new Intent(MainActivity.this, TargetActivity.class);
startActivity(intent);


ปิด Activity ในฝั่ง TargetActivity เอง
this.finish();


การส่งค่าถึง TargetAcvitiy ด้วยการ putExtra

Intent intent = new Intent(MainActivity.this, twoActivity.class);
intent.putExtra("key", value);
startActivity(intent);


การรับค่าจาก value ใน twoActivity

Intent intent = this.getIntent();
String value = intent.getStringExtra("key");

จะได้ค่า value ที่เก็บเป็น String ไปใช้งานต่อไป

--------------------------------------------------------------------------


การเปิด Activity ที่เปิดใหม่ +(รอการตอบกลับ)

Intent intent = new Intent(MainActivity.this, twoActivity.class);
startActivity(intent);
startActivityForResult(intent, REQUEST_CODE);


การส่งค่า Value ลับไปยัง Activity ก่อนหน้าที่เรียกตัวมันขึ้นมา

Intent intent = new Intent();
intent.putExtra("key", "value");
twoActivity.this.setResult(MainActivity.REQUEST_OK, intent);
twoActivity.this.finish();


การรอรับค่าใน Activity เดิมหลังจาก twoActivity ถูกปิดลง

สามารถรับค่าจาก twoActivity ที่ปิดลงได้ที่ method : onActivityResult (ใน sender activity)
มีค่า parameter ที่ส่งกลับมาให้3ค่าคือ requestCode , resultCode , intent

requestCode 
มาจาก startActivityForResult ตอนกดปุ่มที่สั่งให้เปิด Activity
startActivityForResult(intent, MainActivity.REQUEST_CODE);


resultCode 
มาจากการ setResult ก่อนปิด Activity
setResult(MainActivity.RESULT_OK, intent);

intent
สำหรับนำมา getStringExtra จาก key ที่ต้องการ



Example
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);

    String return_key = intent.getStringExtra("key");
    if (resultCode == RESULT_OK && requestCode == MainActivity.REQUEST_CODE){
            // coding
    }
}