Tengo dos clases. La primera es activity, la segunda es un fragmento donde tengo un EditText
. En la actividad tengo una subclase con async-task y en el método doInBackground
obtengo algún resultado, que guardo en una variable. ¿Cómo puedo enviar esta variable desde la subclase "mi actividad" a este fragmento?
Desde Actividad se envían datos con intención como:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
y en el método 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´he encontrado un montón de respuestas aquí @ stackoverflow.com pero definitivamente esta es la respuesta correcta de:
Actividad:
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();
Fragmento:
Lectura del valor en el fragmento
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
o simplemente
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Si pasas una referencia al fragmento (subclase concreta de) a la tarea asíncrona, podrás acceder al fragmento directamente.
Algunas formas de pasar la referencia al fragmento a la tarea asíncrona:
class FooTask extends AsyncTask
), entonces pasa tu fragmento en el constructor.