
Mengirim Data Antar Fragment menggunakan Bundle
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"