Pada postingan sebelumnya saya telah membahas bagaimana menghubungkan antar activity dengan intent. Nah, kali ini saya akan coba melanjutkan bagian kedua dari postingan ini. Jika sebelumnya kita hanya dapat mengirim data dari activity utama ke activity kedua (satu arah), maka kita akan mencoba mengirim balik data dari activity kedua ke activity utama. Untuk mengirim dan menerima data dari activity kita dapat menggunakan method startActivityForResult(). Kita akan memodifikasi program sebelumnya. Simak tutorialnya sebagai berikut :
1. Buat activity baru dengan nama ThirdActivity
2. Buat sebuah layout baru dengan nama activity_third kemudian desain sebagai berikut :
3. Modifikasi layout activity_main sebagai berikut :
4. Tambahkan method berikut ini di MainActivity, angka 48 pada method startActivityForResult() merupakan parameter konstan yang bertujuan agar membedakan antara satu intent dari intent yang lain.
private void startThirdAct(String sometext) { Intent intent = new Intent(this, ThirdActivity.class); intent.putExtra(TAG_MESSAGE, sometext); startActivityForResult(intent, 48); }
5. Sekarang buka ThirdActivity dan tambahkan method berikut untuk mengirim balik data ke MainActivity.
private void sendBackData(String sometext){ Intent intent = getIntent(); intent.putExtra(TAG_MESSAGE, sometext); setResult(RESULT_OK, intent); }
6. Override method onActivityResult() di MainActivity. Method ini berfungsi untuk menangkap result atau data yang dikirim balik dari ThirdActivity
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if((requestCode == 48) && (resultCode == RESULT_OK)){ String message = data.getStringExtra(ThirdActivity.TAG_MESSAGE); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } }
7. Jangan lupa untuk mendaftarkan activity baru yang kita buat di AndroidManifest.xml
8. Berikut source code lengkap untuk MainActivity
package com.wim.androidintent; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ public static final String TAG_MESSAGE = "data.MainActivity"; private EditText txtInput; private Button btnSend1, btnSend2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtInput = (EditText) findViewById(R.id.txtInputData); btnSend1 = (Button) findViewById(R.id.btnSend1); btnSend2 = (Button) findViewById(R.id.btnSend2); btnSend1.setOnClickListener(this); btnSend2.setOnClickListener(this); } private void startSecondAct(String sometext) { Intent intent = new Intent(this, SecondActivity.class); intent.putExtra(TAG_MESSAGE, sometext); startActivity(intent); } private void startThirdAct(String sometext) { Intent intent = new Intent(this, ThirdActivity.class); intent.putExtra(TAG_MESSAGE, sometext); startActivityForResult(intent, 48); } @Override public void onClick(View view) { if(view == btnSend1){ startSecondAct(txtInput.getText().toString()); }else if(view == btnSend2){ startThirdAct(txtInput.getText().toString()); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if((requestCode == 48) && (resultCode == RESULT_OK)){ String message = data.getStringExtra(ThirdActivity.TAG_MESSAGE); Toast.makeText(this, message, Toast.LENGTH_LONG).show(); } } }
9. Berikut source code lengkap untuk ThirdActivity
package com.wim.androidintent; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /** * Created by Wim on 29-Jan-16. */ public class ThirdActivity extends AppCompatActivity implements View.OnClickListener{ public static final String TAG_MESSAGE = "data.ThirdActivity"; private TextView txtShow; private EditText txtInput; private Button btnSend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); txtShow = (TextView) findViewById(R.id.txtShow); txtInput = (EditText) findViewById(R.id.txtSend); btnSend = (Button) findViewById(R.id.btnSend); btnSend.setOnClickListener(this); Intent in = getIntent(); String data = in.getStringExtra(MainActivity.TAG_MESSAGE); txtShow.setText(data); } private void sendBackData(String sometext){ Intent intent = getIntent(); intent.putExtra(TAG_MESSAGE, sometext); setResult(RESULT_OK, intent); } @Override public void onClick(View view) { if(view == btnSend){ sendBackData(txtInput.getText().toString()); finish(); } } }
10. Deploy dan jalankan aplikasinya maka akan tampak sebagai berikut :
Mengirim data dari MainActivity
Menerima data dari MainActivity
Mengirim balik data ke MainActivity
Menerima data balikan dari ThirdActivity
Happy Coding :)
0 Komentar
Penulisan markup di komentar