Sunday 29 November 2015

Tutorial Android 6 : Berpindah Activity Dengan Intent

Pada artikel ini akan dijelaskan mengenai Intent pada pemrograman Android, intent merupakan suatu objek yang terdapat dalam suatu activity dimana dengan objek tersebut bisa melakukan komunikasi dengan activity yang lain, baik activity yang sudah terdapat pada fungsi internal android (Browser, kamera, dll) ataupun memanggil activity yang lain baik dalam satu package ataupun beda package dalam satu projek.
Ada 2 tipe intent dalam pemrograman android,
1. Implicit intent adalah intent yang memanggil fungsi activity yang sudah ada di fungsi internal android seperti Dial Number, Open Browser dan lainya. Berikut contoh penggunaan code implicit intent,

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
startActivity(intent);


2. Explicit Intent adalah intent yang memanggil Activity lain yang masih dalam 1 project. Berikut adalah contoh penggunaan code explicit intent,

Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
startActivity(intent);


Intent dapat digunakan untuk transfer data antar Activity. Pada saat sebuah Activity memanggil Activity yang lain, Intent dapat menyimpan data informasi yang ikut dikirimkan pada pemanggilan tersebut. Kita dapat mengirimkan data ke activity tujuan dengan method putExtra() dan method getExtra() ketika menerima atau memanggil data tersebut.

Mungkin masih bingung melihat code-code diatas dan bagaimana menggunakannya, oleh sebab itu mari kita buat contoh aplikasi mengenai pembahasan intent ini dengan membuat aplikasiContact Selection.
1. Buat project baru di Android Studiodengan nama Application Name "Contact Selection"

2. Pilih minimum SDK Android 4.0 (Ice Cream Sandwich) kemudian pilih "Blank Activity" dan ganti nama Activity Name dengan "ContactIntentActivity"


3.Buat activity baru dengan cara, klik kanan pada app di dalam project yang tadi kita buat pilih New -> Activity -> Blank Activity


4. Isikan Activity Name dengan "ContactPageActivity" dan Layout Name dengan "activity_contact_page"


5. Buka file "activity_contact_intent.xml" pada folder res/layout dan modifikasi layout atau code didalamnya seperti berikut dengan menambahkan komponen ListView di dalam LinearLayout. 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
</LinearLayout>


6. Buka file "activity_contact_page.xml" pada folder res/layout dan modifikasi layout atau code didalamnya seperti berikut dengan menambahkan beberapa komponen TextView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/contactName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        />

    <TextView
        android:id="@+id/contactPhone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/contactWebsite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>


7. Buatlah object Contact dengan cara klik kanan pada com.android.contactselection New -> Java Class. 





8. Isikan dengan nama class ContactObject dan klik Finish.

9. Pada class ContactObject buatlah variable dengan nama : name, phone dan website dengan type String seperti berikut,

import java.io.Serializable;

public class ContactObject implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private String phone;
    private String website;

    public ContactObject(String name, String phone, String website) {
        super();
        this.name = name;
        this.phone = phone;
        this.website = website;
    }


    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String getPhone()
    {
        return phone;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getWebsite()
    {
        return website;
    }

    public void setWebsite(String website)
    {
        this.website = website;
    }
}


10. Buka ContactIntentActivity didalam folder java, dan isikan code seperti berikut

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class ContactIntentActivity extends ActionBarActivity {
    private ListView intentListView;
    private List<ContactObject> contactsList;
    private ArrayAdapter<String> adapter;
    private final int PHONE = 0;
    private final int WEBSITE = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact_intent);
        intentListView = (ListView) findViewById(R.id.listView1);
        contactsList = new ArrayList<ContactObject>();
        contactsList.add(new ContactObject("Android One", "111-1111-1111", "www.android.com"));
        contactsList.add(new ContactObject("Android Two", "222-2222-2222", "www.android.com"));
        contactsList.add(new ContactObject("Android Three", "333-3333-3333", "www.android.com"));
        contactsList.add(new ContactObject("Android Four", "444-4444-4444", "www.android.com"));

        List<String> listName = new ArrayList<String>();
        for (int i = 0; i < contactsList.size(); i++)
        {
            listName.add(contactsList.get(i).getName());
        }
        adapter = new ArrayAdapter<String>(ContactIntentActivity.this,
                android.R.layout.simple_list_item_1, listName);
        intentListView.setAdapter(adapter);
        intentListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                Intent i = new Intent(ContactIntentActivity.this, ContactPageActivity.class);
                i.putExtra("Object", contactsList.get(position));
                startActivityForResult(i, 0);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,
                                    Intent data)
    {
        if (data == null) {
            return;
        }
        Bundle resultData = data.getExtras();
        String value = resultData.getString("value");
        switch (resultCode)
        {
            case PHONE:
                startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + value)));
                break;
            case WEBSITE:
                startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + value)));
                break;
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.menu_contact_intent, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {     
        int id = item.getItemId();      
        if (id == R.id.action_settings)
        {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}


11. Buka ContactPageActivity dan isikan kode berikut :

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public class ContactPageActivity extends ActionBarActivity implements View.OnClickListener {
    private final int PHONE = 0;
    private final int WEBSITE = 1;
    private TextView contactName;
    private TextView contactPhone;
    private TextView contactWebsite;
    private ContactObject contactObject;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contact_page);
        contactName = ( TextView )findViewById(R.id.contactName);
        contactPhone = ( TextView )findViewById(R.id.contactPhone);
        contactWebsite = (TextView)findViewById(R.id.contactWebsite);
        Bundle extras = getIntent().getExtras();
        if( extras == null)
            return;
        contactObject = (ContactObject)
                getIntent().getSerializableExtra("Object");

        contactName.setText(contactObject.getName());
        contactPhone.setText("Phone: " + contactObject.getPhone());
        contactWebsite.setText("Website: " + contactObject.getWebsite());

        contactPhone.setOnClickListener(this);
        contactWebsite.setOnClickListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.menu_contact_page, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        int id = item.getItemId();

        if (id == R.id.action_settings)
        {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.contactPhone:
                Intent i = new Intent();
                i.putExtra("value", contactObject.getPhone());
                setResult(PHONE, i);
                finish();
                break;
            case R.id.contactWebsite:
                i = new Intent();
                i.putExtra("value", contactObject.getWebsite());
                setResult(WEBSITE, i);
                finish();
                break;
        }
    }
}


12. Pada AndroidManifest.xml tambahkan 2 permission untuk mengijinkan aplikasi konek ke internet dan melakukan panggilan telepon.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE"/>


13. Jalankan aplikasinya.

Demikian penjelasan dan contoh aplikasi android mengenai Intent, semoga bermanfaat.

No comments:

Post a Comment