Jeg har to klasser. Først er aktivitet, andre er et fragment der jeg har noen EditText
. I activity har jeg en underklasse med async-task og i metoden doInBackground
får jeg et resultat som jeg lagrer i en variabel. Hvordan kan jeg sende denne variabelen fra underklassen "min aktivitet" til dette fragmentet?
Fra Aktivitet sender du data med hensikt som:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
og i Fragment onCreateView-metoden:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
return inflater.inflate(R.layout.fragment, container, false);
}
Jeg har funnet mange svar her på stackoverflow.com, men dette er definitivt det riktige svaret på:
Aktivitet:
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:
Leser verdien i fragmentet
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
eller bare
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Hvis du sender en referanse til (den konkrete underklassen av) fragmentet i asynkroniseringsoppgaven, kan du få tilgang til fragmentet direkte.
Noen måter å sende fragmentreferansen inn i async-oppgaven:
class FooTask extends AsyncTask
), send deretter fragmentet ditt til konstruktøren.