web-dev-qa-db-fra.com

Comment utiliser les méthodes setArguments () et getArguments () dans Fragments?

J'ai 2 fragments: (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();

Comment puis-je obtenir ces données dans Frag2?

Vous avez une méthode appelée getArguments() qui appartient à la classe Fragment.

22
codeScriber

Appelez simplement getArguments() dans la méthode onCreateView() de votre Frag2:

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

Exemple: Ajouter des données: -  

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

Exemple: obtenir des données: -  

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

dans Frag1:

Bundle b= new Bundle();

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

Frag2.setArguments(b);

dans Frag2:

Bundle b=getArguments();

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

est-ce si simple?.

6
Siva krishna

pour ceux comme moi qui cherchent à envoyer des objets autres que des primitives, étant donné que vous ne pouvez pas créer de constructeur paramétré dans votre fragment, ajoutez simplement un accesseur setter dans votre fragment, cela fonctionne toujours pour moi. 

3
Mina Gabriel

Instancier le fragment de la bonne manière!

getArguments()setArguments() Les méthodes semblent très utiles quand il s'agit instancier un fragment en utilisant une méthode statique.
c'est-à-dire Myfragment.createInstance(String msg)

Comment faire? 

Code de fragment

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

}

Supposons que vous souhaitiez passer une chaîne lors de la création d'une instance. Ce Voici comment vous allez le faire.

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

Lire la suite

1)Pourquoi Myfragment.getInstance (String msg) est-il préférable au nouveau MyFragment (String msg)?
2)Exemple de code sur les fragments

0
Rohit Singh

call getArguments dans la méthode onCreateView ()

0
mahmoud mabrok