J'ai deux classes. La première est l'activité, la seconde est un fragment où j'ai un EditText
. Dans l'activité, j'ai une sous-classe avec une tâche asynchrone et dans la méthode doInBackground
j'obtiens un résultat, que je sauvegarde dans une variable. Comment puis-je envoyer cette variable de la sous-classe "mon activité" à ce fragment ?
Depuis l'activité, vous envoyez des données avec l'intention de :
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
et dans la méthode Fragment onCreateView :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
return inflater.inflate(R.layout.fragment, container, false);
}
J´ai trouvé beaucoup de réponses ici @ stackoverflow.com mais c´est sans aucun doute la bonne réponse :
Activité:
Bundle bundle = new Bundle();
String myMessage = "Stackoverflow is cool!";
bundle.putString("message", myMessage );
FragmentClass fragInfo = new FragmentClass();
fragInfo.setArguments(bundle);
transaction.replace(R.id.fragment_single, fragInfo);
transaction.commit();
Fragmentation:
Lecture de la valeur dans le fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
ou simplement
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Si vous passez une référence au fragment (sous-classe concrète du) dans la tâche asynchrone, vous pouvez alors accéder directement au fragment.
Quelques façons de passer la référence du fragment dans la tâche asynchrone :
class FooTask extends AsyncTask
), alors passez votre fragment dans le constructeur.