Menampilkan Dialog Window - (2)

Cara kedua menampilkan dialog window adalah menggunakan 'DialogFragment'. Ini adalah cara yang lebih baru dan lebih tepat (cara yang pertama menggunakan 'showDialog()' sudah deprecated pada API level 13). Dialog akan dibuat di dalam fragment terpisah yang diturunkan dari class 'DialogFragment'. Cara ini punya dua teknik untuk menampilkan dialog, yaitu 1) melalui method 'onCreateDialog()', dan 2) melalui method 'onCreateView()'. Dalam latihan ini kita akan berlatih menggunakan method 'onCreateDialog', seperti latihan di bawah ini.

1. Kita buat project baru dalam Android Studio dengan nama FragmentDialog.

2. File layout: 'activity_main.xml' masih menggunakan kode yang sama dengan latihan sebelumnya.

3. Kita buat file java baru "MyDF.java" yang berfungsi untuk membuat dialog, seperti berikut (kode yang sama dalam method 'onCreateDialog()' dari latihan sebelumnya tetapi dengan modifikasi sedikit):
package com.example.fragmentdialog;

import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.widget.Toast;

public class MyDF extends DialogFragment {

CharSequence[] items = {"Google", "Apple", "Microsoft"};
boolean[] itemsChecked = new boolean[items.length];

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("Ini adalah dialog dengan teks sederhana...");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getActivity(), "OK clicked!", Toast.LENGTH_SHORT).show();
}
});

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton)
{
Toast.makeText(getActivity(), "Cancel clicked!", Toast.LENGTH_SHORT).show();
}
});

builder.setMultiChoiceItems(items, itemsChecked, new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Toast.makeText(getActivity(), items[which] + (isChecked ? " checked!":" unchecked!"),
Toast.LENGTH_SHORT).show();
}
});
return builder.create();
}
}

4. Modifikasi file 'MainActivity.java' seperti berikut:
package com.example.fragmentdialog;

import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

public class MainActivity extends AppCompatActivity {

FragmentManager fm = getFragmentManager();
MyDF dialogFragment = new MyDF();

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

public void onClick(View v) {
dialogFragment.show(fm, "Dialog");
}
5. Jalankan di emulator Android Studio. Tampilan hasil seharusnya sama dengan latihan sebelumnya seperti gambar di bawah ini.

Dialog menggunakan DialogFragment
Penjelasan

Dalam menampilkan dialog dengan teknik ini, dialog dibuat dalam class java (fragment) terpisah yang menerapkan 'extends' class 'DialogFragment'. Ini adalah teknik yang lebih baru sebagai pengganti teknik yang lama dalam latihan sebelumnya yang sudah 'deprecated'. Dialog dibuat dalam method 'onCreateDialog()', dengan membuat instans dari class 'AlertDialog.Builder'. Setelah membuat instans dari class 'AlertDialog.Builder' kita bisa memodifikasi dialog dengan men-set berbagai macam properti yang disediakan oleh class 'AlertDialog.Builder'.

Berikutnya, dalam file "MainActivity.java" kita akan menampilkan dialog yang ada di class terpisah MyDF.java (class DialogFragment). Untuk menampilkan kita akan menggunakan method 'show()' dari class DialogFragment. Jadi disini kita akan membuat instans terlebih dahulu dari class MyDF.java (yang sudah menerapkan extends 'DialogFragment') dengan kode berikut di awal:
MyDF dialogFragment = new MyDF();
Dengan demikian kita akan memanggil method 'show()' dengan kode seperti berikut:
dialogFragment.show(fm, "Dialog");
Method 'show()' di atas memerlukan dua parameter, yang pertama adalah objek 'FragmentManager' dan yang kedua adalah tag yang berupa 'string'.

Karena method 'show()' memerlukan objek 'FragmentManager' maka kita harus terlebih dahulu membuat instans objek dari class 'FragmentManager' yang sudah kita lakukan di atas dengan kode berikut:
FragmentManager fm = getFragmentManager();

Catatan:
Untuk latihan menggunakan 'DialogFragment' dengan method 'onCreateView()', bisa mengacu ke link berikut: http://stacktips.com/tutorials/android/android-dialog-fragment-example 

No comments: