Permasalahan Multiple Activity Pada Aplikasi Android

Aplikasi Android yang sangat komplek pastinya memiliki beberapa Activity yang di dalamnya memiliki source code untuk menampilkan informasi tertentu. Dari masing-masing Activity tersebut, pembaca terkadang mungkin pernah mengalami permasalahan untuk mengakhiri beberapa Activity.

Activity Android

Permasalahan pada Activity ini maksudnya adalah, misalnya kita memiliki 3 Activity dan pada waktu itu user berada pada Activity ke 2 usai berada pada Activity 3. Lantas, ketika user memencet back button (tombol back) pada Activity 2, bukannya kembali ke Activity 1 malah user dikembalikan ke Activity ke 3.

Penulis pernah mengalami permasalahan ketika membuat aplikasi dengan basis lebih dari 5 Activity dan masing-masing Activity menyimpan Bundle Extra (informasi data) yang didapat dari Activity sebelumnya. Problem utama sebenarnya bukan pada kembalinya pada Activity sebelumnya, tetapi karena data yang disimpan adalah sementara maka aplikasi penulis tersebut mengalami Crash ketika pada Activity terakhir.

Penulis akan memberikan beberapa tips yang semoga dapat memecahkan masalah pembaca jika mengalami problem mirip pada kasus di atas. Jangan sampai permasalahan kecil ini mengakibatkan aplikasi pembaca Crash dan menimbulkan citra buruk performa aplikasi.

Menambahkan Parent Activity Pada Manifest

Setiap aplikasi yang memiliki beberapa Activity, sangat pasti memiliki Main Activity. Main Activity biasanya berupa menu utama saat user pertama kali menjalankan aplikasi. Jika aplikasi memiliki Main Activity, tentunya harus dideskripsikan juga Parent Activity-nya.

Parent Activity ini adalah konfigurasi value yang diberikan di meta data pada AndroidManifest.xml. Untuk lebih jelasnya, silahkan lihat script berikut :

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >
    <activity
        android:name="com.mkhuda.MainActivity"
        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="com.mkhuda.DetailActivity"
        android:label="@string/app_name" >
        <meta-data 
            android:name="android.support.PARENT_ACTIVITY"
    	    android:value="com.mkhuda.MainActivity" />
        <intent-filter>
            <action android:name="android.intent.action.DETAIL" />

            <category android:name="android.intent.category.DETAIL" />
        </intent-filter>
    </activity>
</application>

Penjelasan kode :

  • Script pada baris 6 – 14 kita mendefinisikan Activity utama (MainActivity) pada aplikasi
  • Script pada baris 16 – 27 adalah definisi Activity kedua (ParentActivity) pada aplikasi

Pada kode diatas, silahkan lihat script di baris 20, dimana kita telah mendefinisikan Activity kedua sebagai ParentActivity-nya MainActivity dentan menambahkan meta-data android-name dan android-value. Meta data android-value wajib diisi dengan nilai Activity utama, misal pada kasus diatas Activity utama kita bernama com.mkhuda.MainActivity.

Yang perlu diperhatikan saat pembaca membuat aplikasi dengan multiple Activity adalah pembaca harus mendeskripsikan masing-masing Activity pada Manifest. Karena tanpa ini, kita tidak akan bisa melompat ke Activity tertentu menggunakan Intent.

Memanggil Activity kedua lewat Intent

Setelah Mendefiniskan masing-masing Activity seperti diatas. Pembaca bisa melompat ke Activity selanjutnya dengan membuat back button sederhana dan memberikan clickListener. Berikut adalah contoh kode untuk melompat ke Activity kedua :

public class MainActivity extends Activity {

	Button next;

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

		Button next = (Button) findViewById(R.id.next);
		next.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intentKu = new Intent(MainActivity.this,
				MainActivityDua.class);
				startActivity(intentKu);
			}

		});
	}

	....

}

Penjelasan

  • Script baris ke 16 hingga 18, kita membuat Intent dengan definisi MainActivity sebagai Activity yang aktif dan DetailActivity.class sebagai Activity kedua setelah tombol diklik
  • Mengenai DetailActivity.class, nama Class harus sama persis dengan konfigurasi pada Manifest, jika berbeda aplikasi bisa Crash ketika tombol button di klik.

Jika pembaca sudah mendefinisikan Intent sedemikian rupa, maka proses pergantian Activity tidak akan kacau. Pembaca bisa melakukan uji coba dengan membuat multiple Class (misal 3 Class) yang memiliki 2 parent dengan 1 main. Syaratnya setiap parent harus memiliki android-value sebagai main.

Uji coba dapat dilakukan pada berbagai tipe smartphone seperti Android ini yang juga penulis gunakan untuk testing aplikasi. Karena tips dan tutorial ini tidak mengharuskan Android dengan spesifikasi tertentu. Semoga bermanfaat, dan selamat mencoba ! Jangan pernah menyerah ! Caaaooo 😀

Muhammad K Huda: A non exhausted blogger person within fullstack engineer (spicy food), open source religion, self-taught driver and maybe you know or don't like it. Simply says, Hello from Me!
Related Post