wake-up-neo.com

Wie verwende ich setArguments () - und getArguments () -Methoden in Fragments?

Ich habe 2 Fragmente: (1) Frag1 (2) Frag2.

Frag1

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();

Wie bekomme ich diese Daten in Frag2?

Sie haben eine Methode namens getArguments(), die zur Fragment-Klasse gehört.

22
codeScriber

Rufen Sie einfach getArguments() in der onCreateView()-Methode von Frag2 auf:

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");   
     }
}
181
ashakirov

zB: Daten hinzufügen: -  

   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);

zB: Daten abrufen: -  

String latitude =  getArguments().getString("latitude")
32
Arshid KV

in Frag1:

Bundle b= new Bundle();

b.putStringArray("arrayname that use to retrive in frag2",StringArrayObject);

Frag2.setArguments(b);

in Frag2:

Bundle b=getArguments();

String [] stringArray=b.getStringArray("arrayname that passed in frag1");

ist das so einfach.

6
Siva krishna

für diejenigen wie ich, die andere Objekte als Primitive senden möchten,.... da Sie keinen parametrisierten Konstruktor in Ihrem Fragment erstellen können, fügen Sie einfach einen Setter-Accessor in Ihr Fragment ein. 

3
Mina Gabriel

Das Fragment auf die richtige Weise instanziieren!

getArguments()setArguments()-Methoden scheinen sehr nützlich zu sein, wenn es darum geht ein Fragment mit einer statischen Methode instanziieren.
dh Myfragment.createInstance(String msg)

Wie es geht? 

Fragmentcode

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;
   }

}

Angenommen, Sie möchten einen String übergeben, während Sie eine Instanz erstellen. Diese So werden Sie es tun.

MyFragment.createInstance("This String will be shown in textView");

Weiterlesen

1)Warum wird Myfragment.getInstance (String msg) dem neuen MyFragment (String msg) vorgezogen?
2)Beispielcode für Fragmente

0
Rohit Singh

rufen Sie getArguments in der onCreateView () - Methode auf

0
mahmoud mabrok