Menu

Minggu, 24 Mei 2015

Makalah Menu intent dan Activity Android

TUGAS MOBILE PROGRAMMING

Makalah Menu intent dan Activity Android


                                                                     

Disusun Oleh :
Yusep Muhamad Saefudin 1134065


PROGRAM DIPLOMA IV TEKNIK INFORMATIKA
POLITEKNIK POS INDONESIA
BANDUNG
2015



KATA PENGANTAR

Syukur alhamdulillah segala puji bagi Allah SWT. Tuhan semesta alam yang telah melimpah kan rahmat dan karunia nya sehingga penulis berhasil menyusun makalah ini yang bertema “Menu intent dan Activity Android’’. Walaupun dalam proses penyusunan makalah ini penulis mendapat kan beberapa hambatan dan masalah tetapi dengan bantuan beberapa pihak akhir nya penulis berhasil menyusun makalah ini.

Makalah ini di buat sebagai tugas dari mata kuliah mobile programming, semester genap dan juga di gunakan sebagai pelengkap materi diskusi yang akan di laksana kan ketika jam pelajaran mobile programming.

Semoga makalah ini dapat bermanfaat bagi pembaca. Penulis menyadari bahwa dalam penyusunan makalah ini masih banyak terdapat kesalahan dan kekurangan, oleh karna kritik dan saran dari pembaca sangat di harap kan dan akan di terima penulis dengan senang hati demi penyempurnaan makalah ini di masa mendatang.









Bandung,       Mei 2015




 Penulis



BAB I
PENDAHULUAN

1.1  Latar Belakang Masalah
Intent merupakan suatu objek yang terdapat dalam suatu activity dimana objek tersebut dalam berkomunikasi dengan activity lain, baik pada fungsi internal android maupun memanggil activity dalam satu package atau beda package yang masih dalam satu project maupun beda project.
Activity adalah sebuah window yang berisi user interface dari aplikasi yang kita buat. Setiap aplikasi dapat memiliki lebih dari satu activity, namun tidak dipungkiri pula aplikasi dapat berjalan meskipun tanpa activity, contoh : aplikasi yang berjalan pada background service. Tujuan utama dari adanya activity itu sendiri sebenarnya hanyalah untuk menampilkan user interface yang digunakan user agar dapat  berinteraksi dengan aplikasi.
Pada suatu saat activity pasti akan tampil, tersembunyi, atau bahkan berhenti. Itulah yang dinamakan daur hidup (life cycle) dari activity. Memahami daur hidup activity sangatlah penting bagi segala tipe developer Android untuk memastikan aplikasi dapat berjalan secara baik dan benar #cieee. Ok, tidak panjang lebar ya ; pada tutorial ini saya akan menjelaskan lebih detail bersamaan dengan praktek coding untuk menjelaskan daur hidup (life cycle) dari activity di android.
Memahami Siklus Activty pada aplikasi Android. Aplikasi Android merupakan kumpulan dari beberapa Activity yang tergabung secara bebas dengan Activity satu degan yang lainnya. yang mana kupulan tersebut memiliki satu Activity utama yang digunakan untuk memanggil Activitylainnya secara bertumpuk.
Activity adalah suatu komponen pada aplikasi Android yang menyediakan tampilan, sehingga dapat berinteraksi dengan user untuk melakukan sesuatu, seperti dial telepon, mengambil foto, mengirim email, atau melihat peta. Setiap Activity mendapatkan tampilan/layout sebagai antarmuka dengan user.
Sebuah aplikasi Android biasanya terdiri dari beberapa Activity yang tidak terikat satu sama lain. Biasanya, satu Activity dalam aplikasi ditentukan sebagai Main Activity, Activity utama ini yang digunakan sebagai launcher kepada pengguna ketika aplikasi pertama kalinya dijalankan. Kemudian dapat memulai Activity lain untuk melakukan kegiatan yang berbeda-beda.

1.2  Rumusan Masalah
1.      Apa itu menu intent Android?
2.      Apa itu activity Android?


1.3  Tujuan dan Manfaat
Tujuan penulisan makalah ini adalah untuk mengetahui serta mempelajari menu intent dan activity android. Serta untuk menambah wawasan dan pengetahuan.

Manfaat penulisan makalah ini adalah agar dapat mengetahui menu intent dan activity android beserta penggunaannya, bukan sekedar tahu menggunakannya tetapi juga tahu bagaimana menu intent dan activity android yang ada. Dan dapat memberikan pengetahuan kepada para pembaca terhadap menu intent dan activity android.






BAB II
PEMBAHASAN

2.1  Intent
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. Itu menurut saya loh.. kalo ada koreksi, silakan dikoreksi saja...Dari Pengeritian yang saya berikan di atas. Intent itu terbagi dua, yaitu implicit intent dan explicit intent.
·         Implicit intent merupakan intent yang memanggil fungsi yang sudah ada pada fungsi internal android.
·         Explicit intent merupakan intent yang memanggil Activity lain.
            Salah satu pemegang kunci di android development adalah intent. Intent adalah asynchronous message yang mempunyai fungsi untuk mengaktifkan 3 komponen utama android (activity, service dan broadcastReiver). Cara kerjanya selayaknya messenger yang meminta aksi dari komponen lainnya baik komponen tersebut milik dari aplikasi ataupun bukan. Intent dapat didefinisikan secara explicit dan implicit. Explicit intent yaitu intent yang didefinisikan secara langsung ketika akan mengaktifkan suatu komponen dengan memanggil class name-nya. Contohnya:

\\ start component activity DisplayMessageActivity Intent intent = new Intent(this, DisplayMessageActivity.class); startActivity(intent);

Sedangkan implicit intent mendeskripsikan type action untuk ditindaklanjutkan dan membolehkan system untuk menemukan komponen yang ada didalam device yang dapat melakukan action tersebut. Implicit intent tidak mendefinisikan class name secara langsung. Contohnya:
1.  // Create the text message with a string
2.  Intent sendIntent = new Intent();
3.  sendIntent.setAction(Intent.ACTION_SEND);
4.  sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
5.  sendIntent.setType(HTTP.PLAIN_TEXT_TYPE); // "text/plain" MIME type
6.   
7.  // Verify that the intent will resolve to an activity
8.  if (sendIntent.resolveActivity(getPackageManager()) != null) {
9.      startActivity(sendIntent);
10.  }


Salah satu kekuatan utama dari implisit intent ini adalah dapat sebagai intent matching dari action-action yang ada didalam android. Misalnya contoh berikut, activity ComposeEmailActivity dapat menerima send action (share) yang direquest oleh aplikasi lain. Karena intent-filter action ada yang match dengan android.intent.action.SEND, maka android system memasukkan sebagai list aplikasi yang bisa diekskusi untuk request send(share).
11.  <manifest ... >
12.      ...
13.      <application ... >
14.          <activity android:name="com.example.project.ComposeEmailActivity">
15.              <intent-filter>
16.                  <action android:name="android.intent.action.SEND" />
17.                  <data android:type="*/*" />
18.                  <category android:name="android.intent.category.DEFAULT" />
19.              </intent-filter>
20.          </activity>
21.      </application>
</manifest>

Berikut cara kerja implisit intent sebagai asynchronous messenger didalam system android.
2.1.1 Penggunaan Implicit Intent
Sekarang mari kita coba praktekan implementasi  implicit intent pada aplikasi android kita. Kita coba buat Aplikasi yang didalamnya ada fungsi Call Dial, Open Browser dan Kamera. Berhubung sudah mau masuk bulan ramdhan nanti pada fungsi Open Browser. Kita masukkan address url website yang menampilkan Jadwal Puasa 2011 / Jadwal Imsakiyah Ramadahn 1432H. Buat New Project seperti dibawah ini:
http://agusharyanto.net/wordpress/wp-content/uploads/2011/07/image0011.png
Sekarang mari kita buat user interfacenya dengan mengedit file main.xml
1.      <?xml version="1.0" encoding="utf-8"?>
2.      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.      android:orientation="vertical" android:layout_width="fill_parent"
4.      android:layout_height="fill_parent">
5.      <TextView android:layout_width="fill_parent"
6.      android:layout_height="wrap_content" android:text=" Belajar Implicit Intent" />
7.      <Button android:layout_height="wrap_content"
8.      android:layout_width="match_parent" android:text="Pesan McDonald"
9.      android:id="@+id/btnMcDonald"></Button>
10.  <Button android:layout_height="wrap_content"
11.  android:layout_width="match_parent" android:text="Pesan KFC"
12.  android:id="@+id/btnKFC"></Button>
13.  <Button android:text="Belajar Android" android:layout_height="wrap_content"
14.  android:layout_width="match_parent" android:id="@+id/btnBelajarAndroid"></Button>
15.  <Button android:text="Jadwal Puasa" android:layout_height="wrap_content"
16.  android:id="@+id/btnJadwalPuasa" android:layout_width="match_parent"></Button>
17.  <Button android:text="Ambil Gambar" android:layout_height="wrap_content"
18.  android:id="@+id/btnKamera" android:layout_width="match_parent"></Button>
19.  </LinearLayout>

Pada code main.xml diatas Menggunakan LinearLayout yang didalamnya terdapat 1 buah TextView dan 5 Button.


Edit file BelajarImplicitIntent.java
001
package com.agusharyanto.net.implicit.intent;
002


003
import android.app.Activity;

004
import android.content.Intent;
005
import android.net.Uri;

006
import android.os.Bundle;
007
import android.view.View;

008
import android.widget.Button;
009
import android.widget.Toast;
010


011
public class BelajarImplicitIntentActivity extends Activity {
012
    /** Called when the activity is first created. */

013
    @Override

014
    public void onCreate(Bundle savedInstanceState) {
015
        super.onCreate(savedInstanceState);
016
        setContentView(R.layout.main);

017


018
        Button btnMcDonald = (Button)findViewById(R.id.btnMcDonald);
019
        Button btnKFC = (Button)findViewById(R.id.btnKFC);

020
        Button btnBelajarAndroid = (Button)findViewById(R.id.btnBelajarAndroid);
021
        Button btnJadwalPuasa = (Button)findViewById(R.id.btnJadwalPuasa);
022
        Button btnKamera = (Button)findViewById(R.id.btnKamera);

023


024
         btnMcDonald.setOnClickListener(new Button.OnClickListener(){
025
                public void onClick(View v){

026
                  //  getRequest(txtResult,txtUrl);
027
                    CallIntent(v);
028
                }

029
            });

030
         btnKFC.setOnClickListener(new Button.OnClickListener(){
031
                public void onClick(View v){

032
                  //  getRequest(txtResult,txtUrl);
033
                    CallIntent(v);
034
                }

035
            });

036
         btnBelajarAndroid.setOnClickListener(new Button.OnClickListener(){
037
                public void onClick(View v){

038
                  //  getRequest(txtResult,txtUrl);
039
                    CallIntent(v);
040
                }

041
            });

042
         btnJadwalPuasa.setOnClickListener(new Button.OnClickListener(){
043
                public void onClick(View v){

044
                  //  getRequest(txtResult,txtUrl);
045
                    CallIntent(v);
046
                }

047
            });

048
         btnKamera.setOnClickListener(new Button.OnClickListener(){
049
                public void onClick(View v){

050
                //  getRequest(txtResult,txtUrl);
051
                    CallIntent(v);
052


053
                }
054
            });

055
    }
056


057
    public void CallIntent(View view) {
058
        Intent intent = null;

059
        switch (view.getId()) {
060
        case R.id.btnKFC:

061
            //akan melakukan Call ke nomor 14022

062
            intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:14022"));
063
            startActivity(intent);
064
            break;

065
        case R.id.btnMcDonald:

066
            //akan melakukan Call ke nomor 14045
067
            intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:14045"));
068
            startActivity(intent);

069
            break;

070
        case R.id.btnBelajarAndroid:
071
            //akan memanggil browser dan menampilkan website http://agusharyanto.net
072
            intent = new Intent(Intent.ACTION_VIEW, Uri

073
                    .parse("http://agusharyanto.net"));
074
            startActivity(intent);

075
            break;

076
        case R.id.btnJadwalPuasa:
077
            //akan memanggil browser dan menampilkan website http://www.pkpu.or.id/imsyak/
078
            intent = new Intent(Intent.ACTION_VIEW, Uri

079
                    .parse("http://www.pkpu.or.id/imsyak/"));
080
            startActivity(intent);

081
            break;
082


083
        case R.id.btnKamera:

084
            //akan memanggil fungsi Camera android
085
            intent = new Intent("android.media.action.IMAGE_CAPTURE");
086
            startActivityForResult(intent, 0);

087
            break;
088
        default:

089
            break;
090
        }

091
    }
092


093
    @Override

094
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
095
      if (resultCode == Activity.RESULT_OK && requestCode == 0) {
096
        String result = data.toURI();

097
        Toast.makeText(this, result, Toast.LENGTH_LONG);
098
      }

099
    }
100


101
}
Disini pada masing-masing button dipasang setOnClickListener.
Agar pada saat kita mengklik atau sentuh button tersebut akan mengekseskusi method onClick didalamnya.
1
btnJadwalPuasa.setOnClickListener(new Button.OnClickListener(){
2
       public void onClick(View v){
3
         //  getRequest(txtResult,txtUrl);
4
           CallIntent(v);
5
       }
6
   });
Contohnya btnJadwalPuasa apabile diklik akan mengeksekusi perintah yang ada pada method onClick dalam hal ini akan memanggil method CallIntent
1
case R.id.btnJadwalPuasa:
2
    //akan memanggil browser dan menampilkan website http://www.pkpu.or.id/imsyak/
3
    intent = new Intent(Intent.ACTION_VIEW, Uri
4
            .parse("http://www.pkpu.or.id/imsyak/"));
5
    startActivity(intent);
6
    break;
Method CallIntent berfungsi untuk menjalankan Suatu Activity berdasarkan button yang diklik.
Jika button yang diklik adalah btnJadwalPuasa maka akan memanggil intent yang akan memanggil browser dan menampilkan websitehttp://www.pkpu.or.id/imsyak/ yang isinya menampilkan Jadwal Puasa 2011 / Jadwal Imsakiyah Ramadhan 1432H
4. Sekarang kita edit file AndroidManifest.xml
01
<?xml version="1.0" encoding="utf-8"?>
02
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
03
      package="com.agusharyanto.net.implicit.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=".BelajarImplicitIntentActivity"
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

17
    </application>
18

19
    <uses-permission android:name="android.permission.CALL_PRIVILEGED"></uses-permission>
20
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
21
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
22
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>
23
</manifest>

5.Sekarang mari kita jalankan projectnya
http://agusharyanto.net/wordpress/wp-content/uploads/2011/07/image0031.png
Sentuh / Klik button Jadwal Puasa, maka akan menampilkan Jadwal Puasa  2011
(jadwal imsakiyah ramadahan 2011) dari website 
http://www.pkpu.or.id/imsyak/




Diwebsite ini kita bisa pilih jadwal berdarkan kota
http://agusharyanto.net/wordpress/wp-content/uploads/2011/07/image005.png













2.1.2 Penggunaan Explicit Intent
            Oke kita mulai saja buka eclipse, lalu ikuti langkah-langkah berikut ini.
1. Buat Project Baru, isikan fieldnya seperti dibawah ini
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image001.png
Pada saat project pertama kali dibuat ada 3 file penting yang langsung dibuat, yaitu
·         main.xml
·         string.xml
·         BelajarExplicitIntentActivity.java
2. Kita siapkan layout untuk Activity pertama kita, edit main.xml lalu isikan dengan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Main Activity"
    />
<TextView android:text="Activity 1" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:layout_height="wrap_content" android:id="@+id/editText1" android:layout_width="match_parent">
    <requestFocus></requestFocus>
</EditText>
<TextView android:text="Dari Activity 2" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:layout_height="wrap_content" android:id="@+id/editTextdr2" android:layout_width="match_parent"></EditText>
<Button android:text="Call Second Activity" android:id="@+id/btnOpen" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
</LinearLayout>
3. Siapkan juga layout activity ke dua, buat file xml baru lalu simpan dengan nama main2.xml lalui isikan dengan kode berikut
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Second Activity"
    />
<TextView android:text="Dari Activity 1" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:layout_height="wrap_content" android:id="@+id/editTextdr1" android:layout_width="match_parent">
</EditText>
<TextView android:text="Activity 2" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_width="match_parent"></EditText>
<Button android:text="Close Second Activity" android:id="@+id/btnClose" android:layout_width="fill_parent" android:layout_height="wrap_content"></Button>
</LinearLayout>
4. Sekarang masuk ke file javanya, edit File BelajarExplicitIntentActivity.java lalu isikan kode berikut
package com.agus.explicit.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class BelajarExplicitIntentActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btnOpen = (Button) findViewById(R.id.btnOpen);
        //set OnClickListener event to btnOpen
        btnOpen.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
               callIntent();
            }
        });
    }

    //method for call SecondActivity
    public void callIntent(){
        Intent i = new Intent(this, SecondActivity.class);
               startActivity(i);
    }
}
Perhatikan kode
Intent i = new Intent(this, SecondActivity.class);
startActivity(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
package com.agus.explicit.intent;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class SecondActivity extends Activity {
        public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.main2);

               Button btnOpen = (Button) findViewById(R.id.btnClose);
               btnOpen.setOnClickListener(new View.OnClickListener() {

                       @Override
                       public void onClick(View arg0) {
                               // TODO Auto-generated method stub
                               finish(); //close activity
                       }
               });
        }
}
6. Jangan lupa daftarkan Activity (SecodActivity.java) yang kita buat tadi pada Androidmanifest.xml.
Tambahkan kode
<activity android:label="SeconActivity" android:name=".SecondActivity"></activity>
    </application>
Sehingga isi AndroidManifes.xmlmenjadi seperti ini
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.agus.explicit.intent"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".BelajarExplicitIntentActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:label="SeconActivity" android:name=".SecondActivity"></activity>
    </application>
</manifest>





7. Sekarang mari kita jalankan programnya
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image003.png

Klik button Call Second Activity
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image005.png
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.
public void callIntent(){
        Intent i = new Intent(this, SecondActivity.class);
        EditText text1 = (EditText) findViewById(R.id.editTextdr1);
               String dataactivity_1 = text1.getText().toString();
        //untuk mengirim data gunakan putExtra
        i.putExtra("value1", dataactivity_1 );
               startActivity(i);
    }
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
        
Bundle extras = getIntent().getExtras();
               if (extras == null) {
                       return;
               }
               String value1 = extras.getString("value1");

               if (value1 != null ) {
                       EditText text1 = (EditText) findViewById(R.id.editText1);
                       text1.setText(value1);
               }







10. sekarang mari kita run kembali
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image007.png
Isi Inputan Activity 1 dengan “mau makan apa ?”, lalu klik button Call Second Activity
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image009.png
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
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image011.png
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.
package com.agus.explicit.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class BelajarExplicitIntentActivity extends Activity {
        private static final int REQUEST_CODE = 1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btnOpen = (Button) findViewById(R.id.btnOpen);
        //set OnClickListener event to btnOpen
        btnOpen.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
               callIntent();
            }
        });
    }

    //method for call SecondActivity
    public void callIntent(){
        Intent i = new Intent(this, SecondActivity.class);
        EditText text1 = (EditText) findViewById(R.id.editText1);
               String dataactivity_1 = text1.getText().toString();
        //untuk mengirim data gunakan putExtra
        i.putExtra("value1", dataactivity_1 );
               startActivityForResult(i, REQUEST_CODE);
    }

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
               if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
                       if (data.hasExtra("return_value1")) {
                               EditText text2 = (EditText) findViewById(R.id.editTextdr2);
                               text2.setText(data.getExtras().getString("return_value1"));
                       }
               }
        }
}
Perhatikan code startActivityForResult(i, REQUEST_CODE); Agar Activity pemanggil dapat menangkap data yang dikirimkan oleh activity yang dipanggil, maka kita harus menggunakan perintahstartActivityForResult dan kita harus mengoveride method onActivityResult

12. Pada Class SecondActivity.java rubah isinya menjadi seperti ini.
package com.agus.explicit.intent;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class SecondActivity extends Activity {
        public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.main2);
               Bundle extras = getIntent().getExtras();
               if (extras == null) {
                       return;
               }
               String value1 = extras.getString("value1");

               if (value1 != null ) {
                       EditText text1 = (EditText) findViewById(R.id.editTextdr1);
                       text1.setText(value1);
               }

               Button btnOpen = (Button) findViewById(R.id.btnClose);
               btnOpen.setOnClickListener(new View.OnClickListener() {

                       @Override
                       public void onClick(View arg0) {
                               // TODO Auto-generated method stub
                               finish(); //close activity
                       }
               });
        }

        @Override
        public void finish() {
               Intent data = new Intent();
               EditText text2 = (EditText) findViewById(R.id.editText2);
               String dataactivity_2 = text2.getText().toString();
               data.putExtra("return_value1", dataactivity_2);
               setResult(RESULT_OK, data);
               super.finish();
        }
}
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
http://agusharyanto.net/wordpress/wp-content/uploads/2011/10/image013.png
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.




2.2  Activity Android
Activity merupakan public class dalam aplikasi Android. Setiap activity merupakan sesuatu yang unik atau single, yang ditujukan untuk menghandle macam-macam hal yang bisa dilakukan oleh user. Umumnya, activity berhubungan dengan user di mana activity menciptakan windows atau UI yang mana ditampilkan dengan konsep setContentView (View). Ada dua metode yang pasti dimiliki oleh satu activity yaitu :
1.         onCreate
Untuk menginisiasi suatu activity, biasanya dipanggil dengan perintah setContentView(int) untuk resource yang kita definisikan di layout UI, dan perintah findViewById(int) untuk memanggil widget yang dibutuhkan UI untuk berinteraksi dengan aplikasi.
2.         onPause
Untuk menyatakan ketika user meninggalkan suatu activity.

Untuk penggunaan dengan Context.startActivity(), semua kelas activity harus sesuai dengan <activity> yang di deklarasikan dalam suatu paket di AndroidManifest.xml. Activity adalah bagian penting dari keseluruhan siklus aplikasi, bagaimana activity dijalankan merupakan bagian penting dari model aplikasi.

Activity aplikasi android dikelola dengan sistem yang dikenal dengan activity stack. Ketika suatu activity start, activity diletakkan pada stack yang paling atas dan activity-activity yang sudah jalan berada dibawahnya dan akan terus berada pada posisi stack sampai muncul activity yang baru.

Pada dasarnya activity pada android memiliki empat keadaan, yaitu:
1.                  active atau running, jika activity berada pada posisi atas stack
2.                  pause, jika activity tidak dipakai atau dibutuhkan pada suatu saat tertentu, tetapi activity itu masih ada atau visible, ketika activity baru yang ditangani oleh sistem activity yang lama disebut pause dan masih berada di memori, bisa jadi suatu activity yang sudah keadaan pause tidak ada di memori yang kemungkinan disebabkan oleh keterbatasan memori
3.                  stopped, jika activity sudah tidak dipakai dan digantikan oleh activity lain, activity yang sudah stopped tidak akan pernah dipanggil lagi, dan secara permanen memori pun tidak menyimpan info mengenai activity ini
4.                  restart, jika activity pause atau stopped, sistem dapat menge-drop activity ini dari sistem memori, dan ketika user membutuhkan activity tersebut, activity akan kembali pada keadaan awal, artinya activity tersebut mengalami proses restart.
Berikut ini adalah gambaran mengenai activity lifecycle atau siklus dari activity di dalam android sistem :
Android-Activity-Lifecycle



Berdasarkan gambar lifecycle activity di atas, secara umum dapat kita jelaskan bahwa looping (perulangan) yang mungkin dialami oleh activity ada tiga perulangan, yaitu:
1.                  entirelifetime, yaitu activity yang terjadi mulai dari onCreate() sampai dengan onDestroy(). Biasanya activity ini akan dibuat setup global ketika mendefinisikannya
2.                  visible lifetime, yaitu activity yang terjadi mulai dari onCreate() sampai dengan onStop()
3.                  foreground lifetime yaitu activity yang terjadi di antara onResume() dan onPause()



Sehingga sintaks superclass dari gambar di atas adalah sebagai berikut:
Public class Activity extends ApplicationContext {
protected void onCreate (Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}


Berikut ini merupakan tabel Lifecycle Activity Android
 Tabel Lifecycle Activity Android

Maksud dari killable disini adalah apakah memungkinkan bagi sistem untuk mematikan proses host activity atau tidak. Sehingga method yang ditandai dengan huruf N itu berarti melindungi host activity (tidak dimatikan).

Activity yang secara teknis Killable adalah N bisa saja dimatikan secara otomatis oleh sistem apabila terjadi low memori atau tidak cukupnya resource untuk menjaga activity itu tetap hidup. Kejadian tidak cukupnya resource bisa jadi terjadi karena banyak proses yang sedang dieksekusi dan memerlukan kapasitas memori yang besar, sehingga terjadi low memori yang menyebabkan beberapa activity otomatis hilang dari memori.
2.2.1 Membuat Activity
Activity merupakan sebuah class yang menghandle sebuah halaman user interface pada aplikasi Android. Untuk membuat sebuah Activity, kita lakukan dengan membuat sebuah class yang meng-extends class Activity. Bila kita membuat project aplikasi Android baru pada Android Development Tools, maka ada sebuah class yang bernama MainActivity.java yang tergenerate secara otomatis. Class ini meng-extends class Activity (MainActivity extends Activity) sehingga class ini merupakan sebuah Activity. Activity menampilkan halaman user interface dengan memanggil fungsi onCreate(). Fungsi ini dipanggil ketika class dibuat. Di dalam fungsi tersebut, kita dapat menentukan xml apa yang kita jadikan sebagai halaman user interface dengan memanggil fungsi setContentView()dengan parameter berupa xml halaman user interface, misalnya setContentView(R.layout.activity_main). Code dari class MainActivity adalah sebagai berikut.
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }
}


Activity ini menampilkan halaman user interface dari activity_main.xml yang menampilkan tulisan “Hello world!”. Jika kita menjalankannya maka akan tampil halaman seperti ini.
1
 2.2.2 Menjalankan Activity Lain
Sering kali sebuah aplikasi Android memiliki lebih dari satu halaman user interface. Transisi antar halaman dapat dilakukan dengan pemanggilan Activity lain dari sebuah Activity. Misalnya Activity halaman utama memanggil Activity halaman profile sehingga terjadi transisi dari halaman utama menuju halaman profile. Pemanggilan Activity lain dapat dilakukan dengan memanggil fungsi startActivity() dengan mempassing parameter Intent. Intent adalah object yang mendefinisikan Activity apa yang akan kita jalankan.
Kita akan membuat dua halaman UI yaitu Halaman Utama dan Halaman Profile. Halaman Utama akan dihandle olehActivityUtama.java dan Halaman Profile akan dihandle oleh ActivityProfile.java. ActivityUtama.java akan memanggil ActivityProfile.java. Untuk membuatnya, terlebih dahulu kita buat xml layout dari kedua halaman tersebut.
Buat file halaman_utama.xml pada folder layout dan copy-paste code berikut pada file tersebut.
<?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_margin="32dp"
        android:text="HALAMAN UTAMA" />

    <Button
        android:id="@+id/button_profile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="PROFILE" />

</LinearLayout>


Buat file halaman_profile.xml pada folder layout dan copy-paste code berikut pada file tersebut.
<?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:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_margin="32dp"
        android:text="HALAMAN PROFILE" />

</LinearLayout>

Kemudian kita buat dua class Activity yaitu class ActivityUtama.java dan ActivityProfile.java.
Buat class ActivityUtama.java dan copy-paste code berikut ini pada class tersebut.
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ActivityUtama extends Activity {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.halaman_utama);

                        Button bProfile = (Button) findViewById(R.id.button_profile);
                        bProfile.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View arg0) {
                                Intent intent = new Intent(ActivityUtama.this, ActivityProfile.class);
                                    startActivity(intent);
                            }
                        });
            }
}


Buat class ActivityProfile.java dan copy-paste code berikut ini pada class tersebut.
import android.app.Activity;
import android.os.Bundle;

public class ActivityProfile extends Activity {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.halaman_profile);
            }
}


Kita harus mendefinisikan class Activity yang baru kita buat pada file Manifest dari aplikasi. Buka fileAndroidManifest.xml pada project, hapus code mulai dari  <application  sampai dengan  </application>  dan ganti dengan code berikut ini.
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".ActivityUtama"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".ActivityProfile" />
    </application>

Jalankan project, maka akan tampil halaman berikut ini.
2
            Halaman Utama dihandle oleh ActivityUtama.java. Pada halaman tersebut, terdapat tombol Profile. Jika tombol tersebut ditekan, maka ActivityUtama.java akan menjalankan ActivityProfile.java yang menghandle Halaman Profile.
 3
Jika pada Halaman Profile ditekan tombol Back, maka akan kembali pada Halaman Utama.



BAB IV
PENUTUP

1.      Kesimpulan
Pada suatu activity user dapat berinteraksi dengan menu-menu yang ada di dalamnya. Pada pemrograman android untuk berpindah antar halaman/activity dapat menggunakan bantuan intent. Intent digunakan untuk membuka activity lain di dalam satu aplikasi.

Intent merupakan suatu objek yang terdapat dalam suatu activity dimana objek tersebut dalam berkomunikasi dengan activity lain, baik pada fungsi internal android maupun memanggil activity dalam satu package atau beda package yang masih dalam satu project maupun beda project.






DAFTAR PUSTAKA

·         http://inideveloper.com/intent


1 komentar:

  1. nice info gan, terima kasih sudh mau saling berbagi, oh ya perkenalkan saya Yuli suseno dari kampus ISB Atma Luhur. terima kasih

    BalasHapus