Ik heb twee klassen. De eerste is activity, de tweede is een fragment waar ik wat EditText
heb. In activity heb ik een subclass met async-task en in method doInBackground
krijg ik wat resultaat, dat ik opsla in variabele. Hoe kan ik deze variabele van de subklasse "mijn activiteit" naar dit fragment sturen?
Vanuit Activiteit verstuur je gegevens met de bedoeling als:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
en in Fragment onCreateView methode:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
return inflater.inflate(R.layout.fragment, container, false);
}
Ik´heb veel antwoorden gevonden hier @ stackoverflow.com maar zeker is dit het juiste antwoord van:
Activiteit:
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();
Fragment:
Lezen van de waarde in het fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
of gewoon
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Als je een verwijzing naar het (concrete subklasse van het) fragment doorgeeft aan de async taak, dan kun je het fragment direct benaderen.
Enkele manieren om de fragment referentie in de async taak door te geven:
class FooTask extends AsyncTask
), dan geef je je fragment door in de constructor.