Saya mempunyai 2 fragmen: (1)Frag1 (2)Frag2.
bundl = new Bundle();
bundl.putStringArrayList("elist", eList);
Frag2 dv = new Frag2();
dv.setArguments(bundl);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.the_fragg,dv);
ft.show(getFragmentManager().findFragmentById(R.id.the_fragg));
ft.addToBackStack(null);
ft.commit();
Bagaimana cara mendapatkan data ini di Frag2?
Sebut saja getArguments()
dalam Frag2
's onCreateView()
metode:
public class Frag2 extends Fragment {
public View onCreateView(LayoutInflater inflater,
ViewGroup containerObject,
Bundle savedInstanceState){
//here is your arguments
Bundle bundle=getArguments();
//here is your list array
String[] myStrings=bundle.getStringArray("elist");
}
}
Misalnya: Menambahkan data:-
Bundle bundle = new Bundle();
bundle.putString("latitude", latitude);
bundle.putString("longitude", longitude);
bundle.putString("board_id", board_id);
MapFragment mapFragment = new MapFragment();
mapFragment.setArguments(bundle);
Misalnya: Mendapatkan data :-
String latitude = getArguments().getString("latitude")
Anda memiliki sebuah metode yang disebut getArguments()
milik Fragmen
kelas.
di Frag1:
Bundle b= new Bundle();
b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);
Frag2.setArguments(b);
di Frag2:
Bundle b=getArguments();
String [] stringArray=b.getStringArray("arrayname that passed in frag1");
ini yang sederhana.
untuk orang-orang seperti saya yang mencari untuk mengirim benda-benda lain dari primitif, karena anda dapat't membuat parameter konstruktor dalam fragmen anda, hanya menambahkan setter pengakses dalam fragmen ini selalu bekerja untuk saya.
getArguments()
setArguments()
metode tampaknya sangat berguna ketika datang untuk instantiate sebuah Fragmen menggunakan metode statis. yaituMyfragment.createInstance(String msg)
Bagaimana untuk melakukannya?
Fragmen kode
public MyFragment extends Fragment {
private String displayMsg;
private TextView text;
public static MyFragment createInstance(String displayMsg)
{
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.setString("KEY",displayMsg);
fragment.setArguments(args); //set
return fragment;
}
@Override
public void onCreate(Bundle bundle)
{
displayMsg = getArguments().getString("KEY"): // get
}
@Override
public View onCreateView(LayoutInlater inflater, ViewGroup parent, Bundle bundle){
View view = inflater.inflate(R.id.placeholder,parent,false);
text = (TextView)view.findViewById(R.id.myTextView);
text.setText(displayMsg) // show msg
returm view;
}
}
Let's mengatakan anda ingin lulus String sekaligus menciptakan sebuah Instance. Ini adalah bagaimana anda akan melakukannya.
MyFragment.createInstance("This String will be shown in textView");
1) Mengapa Myfragment.getInstance(String msg) lebih disukai atas baru MyFragment(String msg)? 2) kode Contoh pada Fragmen
panggilan getArguments di onCreateView() metode