Pada kesempatan kali ini kita akan membahas apa itu fungsi Explicit Intent yang akan memanggil satu activity ke activity lainnya yang masih dalam satu project.Untuk lebih jelasnya buka eclipse dan  ikuti langkah langkah berikut ini :

1. Buat sebuah Project Baru, dan isikan pada fieldnya seperti dibawah ini
Tutorial Android Explicit Intent

Pada saat kita membuat project pertama kali dibuat terdapat 3 file penting yang langsung dibuat, yaitu diantaranya:
  • main.xml
  • string.xml
  • BelajarExplicitIntentActivity.java
2. Kita siapkan layout untuk Activity pertama kita, edit main.xml lalu isikan dengan kode berikut

01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:orientation="vertical"
04    android:layout_width="fill_parent"
05    android:layout_height="fill_parent"
06    >
07<TextView
08    android:layout_width="fill_parent"
09    android:layout_height="wrap_content"
10    android:text="Main Activity"
11    />
12<TextView android:text="Activity 1" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
13<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:layout_width="match_parent">
14    <requestFocus></requestFocus>
15</EditText>
16<TextView android:text="Dari Activity 2" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
17<EditText android:layout_height="wrap_content" android:id="@+id/editTextdr2" android:layout_width="match_parent"></EditText>
18<Button android:text="Call Second Activity" android:id="@+id/btnOpen" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
19</LinearLayout>
3. Siapkan juga layout activity ke dua, buat file xml baru lalu simpan dengan nama main2.xml lalui isikan dengan kode berikut

01<?xml version="1.0" encoding="utf-8"?>
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
03    android:orientation="vertical"
04    android:layout_width="fill_parent"
05    android:layout_height="fill_parent"
06    >
07<TextView
08    android:layout_width="fill_parent"
09    android:layout_height="wrap_content"
10    android:text="Second Activity"
11    />
12<TextView android:text="Dari Activity 1" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
13<EditText android:layout_height="wrap_content" android:id="@+id/editTextdr1" android:layout_width="match_parent">
14</EditText>
15<TextView android:text="Activity 2" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
16<EditText android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_width="match_parent"></EditText>
17<Button android:text="Close Second Activity" android:id="@+id/btnClose" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
18</LinearLayout>
4. Sekarang masuk ke file javanya, edit File BelajarExplicitIntentActivity.java lalu isikan kode berikut:

01package com.agus.explicit.intent;
02
03import android.app.Activity;
04import android.content.Intent;
05import android.os.Bundle;
06import android.view.View;
07import android.widget.Button;
08
09public class BelajarExplicitIntentActivity extends Activity {
10    /** Called when the activity is first created. */
11    @Override
12    public void onCreate(Bundle savedInstanceState) {
13        super.onCreate(savedInstanceState);
14        setContentView(R.layout.main);
15
16        Button btnOpen = (Button) findViewById(R.id.btnOpen);
17        //set OnClickListener event to btnOpen
18        btnOpen.setOnClickListener(new View.OnClickListener() {
19            public void onClick(View v) {
20                callIntent();
21            }
22        });
23    }
24
25    //method for call SecondActivity
26    public void callIntent(){
27        Intent i = new Intent(this, SecondActivity.class);
28        startActivity(i);
29    }
30}
Perhatikan kode
1Intent i = new Intent(this, SecondActivity.class);
2startActivity(i);
Kode inilah yang digunakan untuk memanggil class SecondActivity

5. Kita buat file java baru untuk Activity Kedua, simpan dengan nama SecondActivity.java lalu isikan dengan kode berikut:

01package com.agus.explicit.intent;
02
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.View;
06import android.widget.Button;
07
08public class SecondActivity extends Activity {
09    public void onCreate(Bundle savedInstanceState) {
10        super.onCreate(savedInstanceState);
11        setContentView(R.layout.main2);
12
13        Button btnOpen = (Button) findViewById(R.id.btnClose);
14        btnOpen.setOnClickListener(new View.OnClickListener() {
15
16            @Override
17            public void onClick(View arg0) {
18                // TODO Auto-generated method stub
19                finish(); //close activity
20            }
21        });
22    }
23}
6. Jangan lupa daftarkan Activity (SecodActivity.java) yang kita buat tadi pada Androidmanifest.xml.
Tambahkan kode
1<activity android:label="SeconActivity" android:name=".SecondActivity"></activity>
2    </application>
Sehingga isi AndroidManifes.xmlmenjadi seperti ini
01<?xml version="1.0" encoding="utf-8"?>
02<manifest xmlns:android="http://schemas.android.com/apk/res/android"
03      package="com.agus.explicit.intent"
04      android:versionCode="1"
05      android:versionName="1.0">
06    <uses-sdk android:minSdkVersion="8" />
07
08    <application android:icon="@drawable/icon" android:label="@string/app_name">
09        <activity android:name=".BelajarExplicitIntentActivity"
10                  android:label="@string/app_name">
11            <intent-filter>
12                <action android:name="android.intent.action.MAIN" />
13                <category android:name="android.intent.category.LAUNCHER" />
14            </intent-filter>
15        </activity>
16    <activity android:label="SeconActivity" android:name=".SecondActivity"></activity>
17    </application>
18</manifest>
7. Sekarang mari kita jalankan programnya
Tutorial Android Explicit Intent
Klik button Call Second Activity
Tutorial Android Explicit Intent
      Klik tombol Close Second Activity akan Menutup SecondActivity dan menampilkan Activity sebelumnya
8. Kita juga bisa mengirimkan data ke Activity yang dipanggil. Untuk mengirimkan data gunakan peritnha putExtra, untuk itu pada class BelajarExplicitIntentActivity.java, pada method callIntent rubah menjadi seperti ini.
1public void callIntent(){
2        Intent i = new Intent(this, SecondActivity.class);
3        EditText text1 = (EditText) findViewById(R.id.editTextdr1);
4        String dataactivity_1 = text1.getText().toString();
5        //untuk mengirim data gunakan putExtra
6        i.putExtra("value1", dataactivity_1 );
7        startActivity(i);
8    }
9. Untuk membaca data yang dikirim dari Activity yang memanggil, pada class SecondActivity.java dalam method onCreate sesudah “setContentView(R.layout.main);” tambah kode ini
01Bundle extras = getIntent().getExtras();
02if (extras == null) {
03    return;
04}
05String value1 = extras.getString("value1");
06
07if (value1 != null ) {
08    EditText text1 = (EditText) findViewById(R.id.editText1);
09    text1.setText(value1);
10}
10. sekarang mari kita run kembali
Tutorial Android Explicit Intent
      Isi Inputan Activity 1 dengan “mau makan apa ?”, lalu klik button Call Second Activity
Tutorial Android Explicit Intent
      Secara ototmatis Inputan Dari Activity 1 akan terisi sesuai dengan isian yang kita inputkan pada Activity Pemanggil.
Isi inputan Activity 2 dengan “nasi dengan ayam”, lalu klik tombol Close Second Activity
Tutorial Android Explicit Intent
Jawaban dari Second Activity tidak terbaca oleh Activity Pemanggilnya.
11. Untuk membaca data yang dikirim dari SecondActivity pada saat Activity tersebut ditutup. Maka kita perlu menambahkan kode pada class BelajarExplicitIntentActivity.java berikut kode lengkapnya.
01package com.agus.explicit.intent;
02
03import android.app.Activity;
04import android.content.Intent;
05import android.os.Bundle;
06import android.view.View;
07import android.widget.Button;
08import android.widget.EditText;
09
10public class BelajarExplicitIntentActivity extends Activity {
11    private static final int REQUEST_CODE = 1;
12    /** Called when the activity is first created. */
13    @Override
14    public void onCreate(Bundle savedInstanceState) {
15        super.onCreate(savedInstanceState);
16        setContentView(R.layout.main);
17
18        Button btnOpen = (Button) findViewById(R.id.btnOpen);
19        //set OnClickListener event to btnOpen
20        btnOpen.setOnClickListener(new View.OnClickListener() {
21            public void onClick(View v) {
22                callIntent();
23            }
24        });
25    }
26
27    //method for call SecondActivity
28    public void callIntent(){
29        Intent i = new Intent(this, SecondActivity.class);
30        EditText text1 = (EditText) findViewById(R.id.editText1);
31        String dataactivity_1 = text1.getText().toString();
32        //untuk mengirim data gunakan putExtra
33        i.putExtra("value1", dataactivity_1 );
34        startActivityForResult(i, REQUEST_CODE);
35    }
36
37    @Override
38    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
39        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
40            if (data.hasExtra("return_value1")) {
41                EditText text2 = (EditText) findViewById(R.id.editTextdr2);
42                text2.setText(data.getExtras().getString("return_value1"));
43            }
44        }
45    }
46}
Perhatikan code startActivityForResult(i, REQUEST_CODE);
Agar Activity pemanggil dapat menangkap data yang dikirimkan oleh activity yang dipanggil, maka kita harus menggunakan perintah startActivityForResult dan kita harus mengoveride method onActivityResult
12. Pada Class SecondActivity.java rubah isinya menjadi seperti ini.
01package com.agus.explicit.intent;
02
03import android.app.Activity;
04import android.content.Intent;
05import android.os.Bundle;
06import android.view.View;
07import android.widget.Button;
08import android.widget.EditText;
09
10public class SecondActivity extends Activity {
11    public void onCreate(Bundle savedInstanceState) {
12        super.onCreate(savedInstanceState);
13        setContentView(R.layout.main2);
14        Bundle extras = getIntent().getExtras();
15        if (extras == null) {
16            return;
17        }
18        String value1 = extras.getString("value1");
19
20        if (value1 != null ) {
21            EditText text1 = (EditText) findViewById(R.id.editTextdr1);
22            text1.setText(value1);
23        }
24
25        Button btnOpen = (Button) findViewById(R.id.btnClose);
26        btnOpen.setOnClickListener(new View.OnClickListener() {
27
28            @Override
29            public void onClick(View arg0) {
30                // TODO Auto-generated method stub
31                finish(); //close activity
32            }
33        });
34    }
35
36    @Override
37    public void finish() {
38        Intent data = new Intent();
39        EditText text2 = (EditText) findViewById(R.id.editText2);
40        String dataactivity_2 = text2.getText().toString();
41        data.putExtra("return_value1", dataactivity_2);
42        setResult(RESULT_OK, data);
43        super.finish();
44    }
45}
Agar dapat mengirim data ke activity pemanggil pada saat activity ini diclose maka kita perlu mengoverride method finish
13. Sekarang mari kita jalankan programnya, lakukan langkah-langkah seperti pada point 10.
Sekarang pada saat kta klik tombol Close Second Activity maka tampilannya adalah
Tutorial Android Explicit Intent
14. Kita telah berhasil membaca data yang dikirimkan oleh Second Activity, agar lebih memahami cobalah praktekan konsep Explicit Intent ini pada aplikasi yang kita buat.
Kita sudah belajar tentang Explicit Intent, ada tugas nih buatlah aplikasi yang Activity pertamanya berisi List nama buah yang apabila diklik akan memanggil Activity ke 2 yang akan menampilkan gambar buahnya.
Semoga bermanfaat..



0 komentar:

Post a Comment

Translate

RSS Feed

Enter your email address:

Delivered by FeedBurner

Dark Mode

Popular Posts

Blog Archive