• Tidak ada hasil yang ditemukan

Agar Anda dapat lebih memahami topik fragment, akan ada beberapa codelab yang akan Anda lakukan.

N/A
N/A
Protected

Academic year: 2022

Membagikan "Agar Anda dapat lebih memahami topik fragment, akan ada beberapa codelab yang akan Anda lakukan."

Copied!
18
0
0

Teks penuh

(1)

H a l 1 / 18

Modul 3 - Fragment

Tujuan

Agar Anda dapat lebih memahami topik fragment, akan ada beberapa codelab yang akan Anda lakukan.

1. Membuat tampilan fleksibel dengan fragment.

2. Membuat tampilan yang dapat digeser-geser.

3. Membuat tampilan yang dapat disesuaikan dengan perubahan orientasi device.

Codelab

Buat project dengan kriteria sebagai berikut : Project Name : MyFlexibleFragment Minimum Level Api : 15

Default Activity : Empty Activity Activity Name : MainActivity

1. Pada activity_main.xml, silakan kondisikan kode pada berkas tersebut menjadi seperti berikut :

1. <?xml version="1.0" encoding="utf-8"?>

2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

3. xmlns:tools="http://schemas.android.com/tools"

4. android:layout_width="match_parent"

5. android:layout_height="match_parent"

6. tools:context="com.dicoding.associate.myflexiblefragment.MainAct ivity"

7. android:id="@+id/frame_container">

8. </FrameLayout>

2. Kemudian, kita buat beberapa fragment untuk mengimplementasikan perpindahan tampilan tanpa perpindahan activity.

Pertama kita buat Fragment dengan nama HomeFragment.

Caranya : klik kanan pada package utama pada project aplikasi Anda

→ New → Fragment → Fragment (Blank).

(2)

H a l 2 / 18

3. Setelah tampil dialog untuk fragment, isikan HomeFragment pada kolom Fragment

Name dan uncheck untuk kedua pilihan (Include fragment factory methods dan include interface callbacks) seperti gambar dibawah ini. Klik Finish untuk melanjutkan penciptaan fragment.

(3)

H a l 3 / 18 4. Setelah HomeFragment tercipta, pada fragment_home.xml kita sesuaikan

tampilannya dengan menambahkan sebuah obyek TextView dan sebuah obyek Button seperti berikut :

1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2. xmlns:tools="http://schemas.android.com/tools"

3. android:layout_width="match_parent"

4. android:layout_height="match_parent"

5. android:orientation="vertical"

6. tools:context="layout.HomeFragment">

7. <TextView

8. android:layout_width="match_parent"

9. android:layout_height="wrap_content"

10. android:text="Hello Ini Home Fragment"

11. android:layout_marginTop="@dimen/activity_vertical_margin"

12. android:layout_marginBottom="@dimen/activity_vertical_margin"

13. android:layout_marginLeft="@dimen/activity_horizontal_margin"

14. android:layout_marginRight="@dimen/activity_horizontal_margin"/>

15. <Button

16. android:id="@+id/btn_category"

17. android:layout_width="match_parent"

18. android:layout_height="wrap_content"

19. android:layout_margin="@dimen/activity_horizontal_margin"

20. android:text="Ke Halaman Category"/>

21. </LinearLayout>

Akan terjadi error pada tools:context. Tenang, yang perlu Anda lakukan adalah menyesuaikannya dengan nama activity dan ditambahkan dengan nama package dari project Anda.

5. Pada HomeFragment.java lakukan penyesuaian kode sebagai berikut:

1. public class HomeFragment extends Fragment implements View.OnClickListen er{

2. public HomeFragment() {

3. // Required empty public constructor 4. }

5. @Override

6. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

7. Bundle savedInstanceState) { 8. // Inflate the layout for this fragment

9. View view = inflater.inflate(R.layout.fragment_home, container, false);

10. Button btnCategory = (Button)view.findViewById(R.id.btn_category)

;

11. btnCategory.setOnClickListener(this);

12. return view;

13. }

14. @Override

15. public void onClick(View v) {

(4)

H a l 4 / 18

16. if (v.getId() == R.id.btn_category){

17. //todo to CategoryFragment 18. }

19. } 20. }

6. Selanjutnya, pada MainActivity.java, kita tanamkan HomeFragment kedalam activity tersebut sehingga bisa tampil ke layar pengguna dengan menambahkan beberapa baris berikut:

1. public class MainActivity extends AppCompatActivity { 2. @Override

3. protected void onCreate(Bundle savedInstanceState) { 4. super.onCreate(savedInstanceState);

5. setContentView(R.layout.activity_main);

6.

7. FragmentManager mFragmentManager = getSupportFragmentManager();

8. FragmentTransaction mFragmentTransaction = mFragmentManager.begi nTransaction();

9. HomeFragment mHomeFragment = new HomeFragment();

10. mFragmentTransaction.add(R.id.frame_container, mHomeFragment, Ho meFragment.class.getSimpleName());

11.

12. Log.d("MyFlexibleFragment", "Fragment Name :"+HomeFragment.class .getSimpleName());

13. mFragmentTransaction.commit();

14. } 15. }

Untuk mengatasi tanda merah pada class, jangan lupa untuk tekan (Alt + Enter) untuk import kelas secara otomatis.

7. Sekarang, setelah selesai semua, silakan jalankan aplikasi Anda dan hasilnya

haruslah seperti ini.

(5)

H a l 5 / 18

Ketika aplikasi dijalankan, aplikasi akan menampilkan satu text dan satu button yang dimana kedua komponen tersebut dimiliki oleh HomeFragment.

(6)

H a l 6 / 18

Flexible Fragment di satu Activity

Buat kembali fragment baru dengan nama CategoryFragment dengan cara yang sama seperti sebelumnya. Jangan lupa untuk meng-uncheck pilihan untuk generate default methods dan callbacks.

1. Pada fragment_category.xml silakan kondisikan kode Anda menjadi seperti berikut:

1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2. xmlns:tools="http://schemas.android.com/tools"

3. android:layout_width="match_parent"

4. android:layout_height="match_parent"

5. android:orientation="vertical"

6. android:padding="16dp"

7. tools:context="com.dicoding.associate.myflexiblefragment.CategoryFrag ment">

8. <TextView

9. android:layout_width="match_parent"

10. android:layout_height="wrap_content"

11. android:text="Ini halaman Category"

12. android:layout_marginBottom="@dimen/activity_horizontal_margin"/>

13. <Button

14. android:id="@+id/btn_detail_category"

15. android:layout_width="match_parent"

16. android:layout_height="wrap_content"

17. android:text="Kategory Lifestyle"/>

18. </LinearLayout>

2. Setelah selesai dengan layout xml, sekarang pada file CategoryFragment.java modifikasi kodenya menjadi sebagai berikut :

1. public class CategoryFragment extends Fragment implements View.OnClickLi stener {

2. private Button btnDetailCategory;

3. public CategoryFragment() {

4. // Required empty public constructor 5. }

6. @Override

7. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

8. Bundle savedInstanceState) { 9. // Inflate the layout for this fragment

10. View view = inflater.inflate(R.layout.fragment_category, containe r, false);

(7)

H a l 7 / 18

11. btnDetailCategory = (Button)view.findViewById(R.id.btn_detail_cat egory);

12. btnDetailCategory.setOnClickListener(this);

13. return view;

14. }

15. @Override

16. public void onClick(View v) {

17. if (v.getId() == R.id.btn_detail_category){

18. } 19. } 20. }

3. Pada langkah diatas kita sedang menyiapkan langkah selanjutnya, bagaimana kita bisa mengirimkan data dari satu fragment ke fragment lain. Sekarang pada HomeFragment tambahkan baris berikut pada method onClick().

1. CategoryFragment mCategoryFragment = new CategoryFragment();

2. FragmentManager mFragmentManager = getFragmentManager();

3. FragmentTransaction mFragmentTransaction = mFragmentManager.beginTransac tion();

4. mFragmentTransaction.replace(R.id.frame_container, mCategoryFragment, Ca tegoryFragment.class.getSimpleName());

5. mFragmentTransaction.addToBackStack(null);

6. mFragmentTransaction.commit();

4. Sehingga kode dari HomeFragment kita sekarang menjadi sebagai berikut :

1. public class HomeFragment extends Fragment implements View.OnClickListen er{

2. public HomeFragment() {

3. // Required empty public constructor 4. }

5. @Override

6. public View onCreateView(LayoutInflater inflater, ViewGroup containe r,

7. Bundle savedInstanceState) { 8. // Inflate the layout for this fragment

9. View view = inflater.inflate(R.layout.fragment_home, container, false);

10. Button btnCategory = (Button)view.findViewById(R.id.btn_category );

11. btnCategory.setOnClickListener(this);

12. return view;

13. }

14. @Override

15. public void onClick(View v) {

16. if (v.getId() == R.id.btn_category){

(8)

H a l 8 / 18

17. //todo to CategoryFragment

18. CategoryFragment mCategoryFragment = new CategoryFragment();

19. FragmentManager mFragmentManager = getFragmentManager();

20. FragmentTransaction mFragmentTransaction = mFragmentManager.

beginTransaction();

21. mFragmentTransaction.replace(R.id.frame_container, mCategory Fragment, CategoryFragment.class.getSimpleName());

22. mFragmentTransaction.addToBackStack(null);

23. mFragmentTransaction.commit();

24. } 25. } 26. }

5. Setelah selesai, silakan jalankan aplikasi lagi dan coba klik tombol Ke Halaman

Category, aplikasi sudah berpindah tampilan tanpa berpindah activity!

(9)

H a l 9 / 18

Mengirim Data Antar Fragment

Kita telah belajar bagaimana berpindah dari satu fragment ke fragment lain, kurang lengkap rasanya jika kita belum tahu bagaimana berpindah fragment dengan membawa data.

Terdapat dua cara yaitu :

1. Dengan menggunakan obyek Bundle dan 2. Dengan menggunakan setter dan getter.

Mari kita langsung praktek untuk kedua cara tersebut.

1. Buat Fragment lagi dengan cara yang sama dengan

nama DetailCategoryFragment. Pada fragment_detail_category.xml sesuaikan kodenya menjadi seperti berikut:

1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2. xmlns:tools="http://schemas.android.com/tools"

3. android:layout_width="match_parent"

4. android:layout_height="match_parent"

5. android:padding="16dp"

6. android:orientation="vertical"

7. tools:context="com.dicoding.associate.myflexiblefragment.DetailCatego ryFragment">

8. <TextView

9. android:id="@+id/tv_category_name"

10. android:layout_width="match_parent"

11. android:layout_height="wrap_content"

12. android:text="Category Name"

13. android:layout_marginBottom="16dp"/>

14. <TextView

15. android:id="@+id/tv_category_description"

16. android:layout_width="match_parent"

17. android:layout_height="wrap_content"

18. android:text="Category Description"

19. android:layout_marginBottom="16dp"/>

20. <Button

21. android:id="@+id/btn_profile"

22. android:layout_width="match_parent"

23. android:layout_height="wrap_content"

24. android:text="Ke Halaman Activity"/>

25. <Button

26. android:id="@+id/btn_show_dialog"

27. android:layout_width="match_parent"

28. android:layout_height="wrap_content"

29. android:text="Tampilkan sebuah dialog"/>

30. </LinearLayout>

(10)

H a l 10 / 18 2. Setelah selesai, silakan lengkapi kode pada DetailCategoryFragment.java

menjadi seperti berikut :

1. public class DetailCategoryFragment extends Fragment implements View.OnC lickListener{

2. private TextView tvCategoryName;

3. private TextView tvCategoryDescription;

4. private Button btnProfile;

5. private Button btnShowDialog;

6. public static String EXTRA_NAME = "extra_name";

7. private String description;

8. public DetailCategoryFragment() {

9. // Required empty public constructor 10. }

11. public String getDescription() { 12. return description;

13. }

14. public void setDescription(String description) { 15. this.description = description;

16. }

17. @Override

18. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

19. Bundle savedInstanceState) { 20. // Inflate the layout for this fragment

21. View view = inflater.inflate(R.layout.fragment_detail_category, container, false);

22. tvCategoryName = (TextView)view.findViewById(R.id.tv_category_nam e);

23. tvCategoryDescription = (TextView)view.findViewById(R.id.tv_categ ory_description);

24. btnProfile = (Button)view.findViewById(R.id.btn_profile);

25. btnProfile.setOnClickListener(this);

26. btnShowDialog = (Button)view.findViewById(R.id.btn_show_dialog);

27. btnShowDialog.setOnClickListener(this);

28. return view;

29. }

30. @Override

31. public void onActivityCreated(@Nullable Bundle savedInstanceState) { 32. super.onActivityCreated(savedInstanceState);

33. String categoryName = getArguments().getString(EXTRA_NAME);

34. tvCategoryName.setText(categoryName);

35. tvCategoryDescription.setText(getDescription());

36. }

37. @Override

38. public void onClick(View v) { 39. switch (v.getId()){

40. case R.id.btn_profile:

41. break;

42. case R.id.btn_show_dialog:

43. break;

44. } 45. } 46. }

(11)

H a l 11 / 18 Kode diatas akan mendemonstrasikan bagaimana melakukan penampilan data yang dikirim melalui perpindahan fragment.

3. Baik, tinggal selangkah lagi proses implementasi dari pengiriman data melalui perpindahan fragment selesai, sekarang buka

kembali CategoryFragment.java lalu tambahkan baris berikut pada method onClick().

1. @Override

2. public void onClick(View v) {

3. if (v.getId() == R.id.btn_detail_category){

4. DetailCategoryFragment mDetailCategoryFragment = new DetailCatego ryFragment();

5. Bundle mBundle = new Bundle();

6. mBundle.putString(DetailCategoryFragment.EXTRA_NAME, "Lifestyle")

;

7. String description = "Kategori ini akan berisi produk-produk life style";

8. mDetailCategoryFragment.setArguments(mBundle);

9. mDetailCategoryFragment.setDescription(description);

10. FragmentManager mFragmentManager = getFragmentManager();

11. FragmentTransaction mFragmentTransaction = mFragmentManager.begin Transaction();

12. mFragmentTransaction.replace(R.id.frame_container, mDetailCategor yFragment,

13. DetailCategoryFragment.class.getSimpleName());

14. mFragmentTransaction.addToBackStack(null);

15. mFragmentTransaction.commit();

16. } 17. }

Sehingga kode CategoryFragment kita sekarang menjadi :

18. public class CategoryFragment extends Fragment implements View.OnClickLi stener {

19. private Button btnDetailCategory;

20. public CategoryFragment() {

21. // Required empty public constructor 22. }

23. @Override

24. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

25. Bundle savedInstanceState) { 26. // Inflate the layout for this fragment

27. View view = inflater.inflate(R.layout.fragment_category, containe r, false);

28. btnDetailCategory = (Button)view.findViewById(R.id.btn_detail_cat egory);

(12)

H a l 12 / 18

29. btnDetailCategory.setOnClickListener(this);

30. return view;

31. }

32. @Override

33. public void onClick(View v) {

34. if (v.getId() == R.id.btn_detail_category){

35. DetailCategoryFragment mDetailCategoryFragment = new DetailCa tegoryFragment();

36. Bundle mBundle = new Bundle();

37. mBundle.putString(DetailCategoryFragment.EXTRA_NAME, "Lifesty le");

38. String description = "Kategori ini akan berisi produk-produk lifestyle";

39. mDetailCategoryFragment.setArguments(mBundle);

40. mDetailCategoryFragment.setDescription(description);

41. FragmentManager mFragmentManager = getFragmentManager();

42. FragmentTransaction mFragmentTransaction = mFragmentManager.b eginTransaction();

43. mFragmentTransaction.replace(R.id.frame_container, mDetailCat egoryFragment,

44. DetailCategoryFragment.class.getSimpleName());

45. mFragmentTransaction.addToBackStack(null);

46. mFragmentTransaction.commit();

47. } 48. } 49. }

4. Sekarang, setelah selesai semua, silakan Anda jalankan aplikasinya untuk melihat

hasil dari kode yang diatas. Seharusnya ketika Anda mengklik tombol Kategory

Lifestyle pada CategoryFragment akan ada data yang dikirimkan sewaktu

perpindahan fragment yang itu melalui object bundle dan mekanisme

metode setter and getter. Tampilan aplikasi Anda sekarang sudah menjadi seperti

ini.

(13)

H a l 13 / 18 Fragment untuk Dialog

Selanjutnya kita masuk ke pemanfaatan fragment untuk menampilkan sebuah custom dialog. Kita akan menggunakan DialogFragment lengkap dengan interaksinya. Siap?

Ayo kita lanjutkan ngodingnya.

1. Baik sekarang buat kembali satu kelas Fragment dengan nama

OptionDialogFragment, jangan lupa untuk uncheck pilihan include fragment factory methods dan include interface methods.Ketika sudah diciptakan, pada fragment_option_dialog.xmlkondisikan kode nya menjadi seperti berikut:

1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

2. xmlns:tools="http://schemas.android.com/tools"

3. android:layout_width="match_parent"

4. android:layout_height="wrap_content"

5. android:orientation="vertical"

6. android:padding="@dimen/activity_vertical_margin"

7. tools:context="com.dicoding.associate.myflexiblefragment.OptionDialog Fragment">

8. <TextView

9. android:layout_width="match_parent"

10. android:layout_height="wrap_content"

11. android:text="Siapa pelatih tersukses Machester United?"

12. android:layout_marginBottom="@dimen/activity_vertical_margin"/>

13. <RadioGroup

14. android:id="@+id/rg_options"

15. android:layout_width="match_parent"

16. android:layout_height="wrap_content"

17. android:orientation="vertical">

18. <RadioButton

19. android:id="@+id/rb_saf"

20. android:layout_width="match_parent"

21. android:layout_height="wrap_content"

22. android:text="Sir Alex Ferguson"

23. android:layout_marginBottom="@dimen/activity_vertical_margin"

/>

24. <RadioButton

25. android:id="@+id/rb_mou"

26. android:layout_width="match_parent"

27. android:layout_height="wrap_content"

28. android:text="Jose Mourinho"

29. android:layout_marginBottom="@dimen/activity_vertical_margin"

/>

30. <RadioButton

31. android:id="@+id/rb_lvg"

32. android:layout_width="match_parent"

33. android:layout_height="wrap_content"

34. android:text="Louis Van Gaal"

(14)

H a l 14 / 18

35. android:layout_marginBottom="@dimen/activity_vertical_margin"

/>

36. <RadioButton

37. android:id="@+id/rb_moyes"

38. android:layout_width="match_parent"

39. android:layout_height="wrap_content"

40. android:text="David Moyes"

41. android:layout_marginBottom="@dimen/activity_vertical_margin"

/>

42. </RadioGroup>

43. <LinearLayout

44. android:layout_width="match_parent"

45. android:layout_height="wrap_content"

46. android:orientation="horizontal">

47. <Button

48. android:id="@+id/btn_close"

49. android:layout_width="match_parent"

50. android:layout_height="wrap_content"

51. android:layout_weight="0.5"

52. android:text="Tutup"

53. android:layout_marginRight="4dp"/>

54. <Button

55. android:id="@+id/btn_choose"

56. android:layout_width="match_parent"

57. android:layout_height="wrap_content"

58. android:layout_weight="0.5"

59. android:text="Pilih"

60. android:layout_marginLeft="4dp"/>

61. </LinearLayout>

62. </LinearLayout>

2. Setelah selesai dengan berkas layout xml sekarang, lanjutkan ngoding untuk OptionDialogFragment. Kondisikan, kodenya menjadi sebagai berikut :

1. public class OptionDialogFragment extends DialogFragment implements View .OnClickListener{

2. private Button btnChoose, btnClose;

3. private RadioGroup rgOptions;

4. private RadioButton rbSaf, rbMou, rbLvg, rbMoyes;

5. private OnOptionDialogListener onOptionDialogListener;

6. public OptionDialogFragment() {

7. // Required empty public constructor 8. }

9. public OnOptionDialogListener getOnOptionDialogListener() { 10. return onOptionDialogListener;

11. }

12. public void setOnOptionDialogListener(OnOptionDialogListener onOption DialogListener) {

13. this.onOptionDialogListener = onOptionDialogListener;

14. }

15. @Override

(15)

H a l 15 / 18

16. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

17. Bundle savedInstanceState) {

18. View view = inflater.inflate(R.layout.fragment_option_dialog, con tainer, false);

19. btnChoose = (Button)view.findViewById(R.id.btn_choose);

20. btnChoose.setOnClickListener(this);

21. btnClose = (Button)view.findViewById(R.id.btn_close);

22. btnClose.setOnClickListener(this);

23. rgOptions = (RadioGroup)view.findViewById(R.id.rg_options);

24. rbSaf = (RadioButton)view.findViewById(R.id.rb_saf);

25. rbLvg = (RadioButton)view.findViewById(R.id.rb_lvg);

26. rbMou = (RadioButton)view.findViewById(R.id.rb_mou);

27. rbMoyes = (RadioButton)view.findViewById(R.id.rb_moyes);

28. return view;

29. }

30. @Override

31. public void onClick(View v) { 32. switch (v.getId()){

33. case R.id.btn_close:

34. getDialog().cancel();

35. break;

36. case R.id.btn_choose:

37. int checkedRadioButtonId = rgOptions.getCheckedRadioButto nId();

38. if (checkedRadioButtonId != -1){

39. String coach = null;

40. switch (checkedRadioButtonId){

41. case R.id.rb_saf:

42. coach = rbSaf.getText().toString().trim();

43. break;

44. case R.id.rb_mou:

45. coach = rbMou.getText().toString().trim();

46. break;

47. case R.id.rb_lvg:

48. coach = rbLvg.getText().toString().trim();

49. break;

50. case R.id.rb_moyes:

51. coach = rbMoyes.getText().toString().trim();

52. break;

53. }

54. getOnOptionDialogListener().onOptionChoosen(coach);

55. getDialog().cancel();

56. } 57. break;

58. } 59. }

60. public interface OnOptionDialogListener{

61. void onOptionChoosen(String text);

62. } 63. }

Ingat, inherit ke kelas DialogFragment pada android support library.

(16)

H a l 16 / 18 3. Setelah selesai, tambahkan beberapa baris pada

metode onClick() di DetailCategoryFragment menjadi sebagai berikut :

1. @Override

2. public void onClick(View v) { 3. switch (v.getId()){

4. case R.id.btn_profile:

5. break;

6. case R.id.btn_show_dialog:

7. OptionDialogFragment mOptionDialogFragment = new OptionDialog Fragment();

8. mOptionDialogFragment.setOnOptionDialogListener(new OptionDia logFragment.OnOptionDialogListener() {

9. @Override

10. public void onOptionChoosen(String text) {

11. Toast.makeText(getActivity(), text, Toast.LENGTH_SHOR T).show();

12. } 13. });

14. FragmentManager mFragmentManager = getChildFragmentManager()

; mOptionDialogFragment.show(mFragmentManager,OptionDialogFragment.class .getSimpleName());

15. break;

16. } 17. }

4. Sehingga kode DetailCategoryFragment kita saat ini menjadi seperti ini :

1. public class DetailCategoryFragment extends Fragment implements View.OnC lickListener{

2. private TextView tvCategoryName;

3. private TextView tvCategoryDescription;

4. private Button btnProfile;

5. private Button btnShowDialog;

6. public static String EXTRA_NAME = "extra_name";

7. private String description;

8. public DetailCategoryFragment() {

9. // Required empty public constructor 10. }

11. public String getDescription() { 12. return description;

13. }

14. public void setDescription(String description) { 15. this.description = description;

16. }

17. @Override

18. public View onCreateView(LayoutInflater inflater, ViewGroup container ,

19. Bundle savedInstanceState) { 20. // Inflate the layout for this fragment

(17)

H a l 17 / 18

21. View view = inflater.inflate(R.layout.fragment_detail_category, container, false);

22. tvCategoryName = (TextView)view.findViewById(R.id.tv_category_nam e);

23. tvCategoryDescription = (TextView)view.findViewById(R.id.tv_categ ory_description);

24. btnProfile = (Button)view.findViewById(R.id.btn_profile);

25. btnProfile.setOnClickListener(this);

26. btnShowDialog = (Button)view.findViewById(R.id.btn_show_dialog);

27. btnShowDialog.setOnClickListener(this);

28. return view;

29. }

30. @Override

31. public void onActivityCreated(@Nullable Bundle savedInstanceState) { 32. super.onActivityCreated(savedInstanceState);

33. String categoryName = getArguments().getString(EXTRA_NAME);

34. tvCategoryName.setText(categoryName);

35. tvCategoryDescription.setText(getDescription());

36. }

37. @Override

38. public void onClick(View v) { 39. switch (v.getId()){

40. case R.id.btn_profile:

41. break;

42. case R.id.btn_show_dialog:

43. OptionDialogFragment mOptionDialogFragment = new OptionDi alogFragment();

44. mOptionDialogFragment.setOnOptionDialogListener(new Optio nDialogFragment.OnOptionDialogListener() {

45. @Override

46. public void onOptionChoosen(String text) {

47. Toast.makeText(getActivity(), text, Toast.LENGTH_

SHORT).show();

48. } 49. });

50. FragmentManager mFragmentManager = getChildFragmentManage r();

51. mOptionDialogFragment.show(mFragmentManager, OptionDialog Fragment.class.getSimpleName());

52. break;

53. } 54. } 55. }

5. Sekarang jalankan kembali aplikasi dan klik pada tombol Tampilkan sebuah

dialog dan hasilnya akan muncul obyek OptionDialogFragment yang baru saja

kita buat, dan coba Anda pilih salah satu option yang ada dan klik tombol Pilih,

lihat hasil dari yang kita pilih tampil ke dalam bentuk soft message (Toast).

(18)

H a l 18 / 18 Form ini digunakan untuk menilai kerja mahasiswa selama proses praktikum

berlangsung.Selama praktikum mahasiswa diminta untuk membuat Aplikasi fragment

seperti pada gambar berikut.

Referensi

Dokumen terkait

Persepsi sosial pria transgender terhadap pekerja seks komersial secara umum adalah seorang wanita yang bekerja memberi layanan seks komersial yang berpenampilan

Pembelajaran berbasis masalah menggunakan berbagai macam kecerdasan yang diperlukan untuk melakukan konfrontasi terhadap tantangan dunia nyata, kemampuan untuk

Menurut Manuaba (2008; h.389) disebutkan perdarahan terjadi karena gangguan hormon, gangguan kehamilan, gangguan KB, penyakit kandungan dan keganasan genetalia. 55)

Untuk itu maka diperlukan penyusunan data dalam bentuk yang lebih kontinu dan obyektif sehingga jika diperoleh data baru yang berada pada sekitar data yang ada tetapi

Bila arah rebahnya berbeda dengan arah miringnya pohon, maka holding wood tidak dibuat sejajar dengan garis akhir takik rebahnya, tetapi melebar kearah berlawanan

Parameter kunci publik yang didapat dari pembangkitan pasangan kunci RSA akan digunakan untuk melakukan dekripsi di pihak penerima.. Parameter kunci publik

Menurut Ditjen Penataan Ruang (2005) dalam rangka mewujudkan pembangunan berkelanjutan melalui upaya konservasi dan pengelolaan sumberdaya alam, maka prinsip

Imam Sodikun – 104.14.024 Pusat Latihan Sepak Bola PSSI | 23 Pelaku pada Kelompok Kegiatan dan kebutuhan ruang Publik Bangunan Asrama Putra/Putri terdiri dari : Tamu yang