Ich habe zwei Klassen. Die erste ist activity, die zweite ist ein Fragment, in dem ich etwas EditText
habe. In der Aktivität habe ich eine Unterklasse mit asynchroner Aufgabe und in der Methode "doInBackground" erhalte ich ein Ergebnis, das ich in einer Variablen speichere. Wie kann ich diese Variable von der Unterklasse "meine Aktivität" an dieses Fragment senden?
Von Aktivität senden Sie Daten mit der Absicht als:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
und in der Methode 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);
}
I´ve eine Menge Antworten hier @ stackoverflow.com gefunden, aber definitiv ist dies die richtige Antwort von:
Activity:
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:
Lesen des Wertes im Fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
oder einfach
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Wenn Sie einen Verweis auf das Fragment (konkrete Unterklasse des Fragments) an die asynchrone Aufgabe übergeben, können Sie direkt auf das Fragment zugreifen.
Einige Möglichkeiten zur Übergabe der Fragmentreferenz an die asynchrone Aufgabe:
class FooTask extends AsyncTask
), dann übergeben Sie Ihr Fragment im Konstruktor.