Programming

Mengirim Data Antar Fragment menggunakan Bundle

17 Mar 2020Khaidir Fahram

Pada artikel sebelumnya (Menampilkan fragment secara flexible pada satu activity) kita sudah belajar bagaimana menampilkan 2 fragment secara flexible menggunakan satu activity.

sekarang kita akan belajar bagaimana mengirim data antar fragment menggunakan bundle

Pertama kita tambahkan Bundle pada fragment asal. sebagai contoh kita kirim data dengan method onClick pada HomeFragment 

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_satu) {
            SecondFragment secondFragment = new SecondFragment();
            FragmentManager manager = getFragmentManager();

            // data yang akan dikirim
            Bundle bundle = new Bundle();
            bundle.putString("DATA", "Hai there ");
            secondFragment.setArguments(bundle);

            if(manager != null){
                manager.beginTransaction()
                        .replace(R.id.frame_container, secondFragment, SecondFragment.class.getSimpleName())
                        .addToBackStack(null)
                        .commit();
            }
        }
    }

Kemudian pada fragment tujuan SecondFragment kita gunakan method onActivityCreated untuk menerima data 

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String string = getArguments().getString("DATA");
        tvSecondFragment.setText(string);
    }

Jangan lupa tambahkan attribute pada class SecondFragment 

TextView tvSecondFragment ;

dan inisialisasi pada method onViewCreated 

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Button button = view.findViewById(R.id.btn_dua);
        button.setOnClickListener(this);
        tvSecondFragment = view.findViewById(R.id.tv_second_fragment);
    }

Juga jangan lupa memberikan id pada layout fragment_second.xml 

    <TextView
        android:id="@+id/tv_second_fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Second Fragment" />

Jika kita coba maka, TextView pada fragment_second akan terisi data "Hai There " yang dikirim menggunakan Bundle dengan key "DATA"