Eu tenho duas aulas. A primeira é atividade, a segunda é um fragmento onde eu tenho algum EditText'. Na activity eu tenho uma subclasse com async-task e no método
doInBackground` eu tenho algum resultado, que eu salvo em variável. Como posso enviar esta variável da subclasse "minha atividade" para este fragmento?
A partir da Atividade você envia dados com intenção como:
Bundle bundle = new Bundle();
bundle.putString("edttext", "From Activity");
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
e no 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´encontrei muitas respostas aqui @ stackoverflow.com mas definitivamente esta é a resposta correta:
Atividade:
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:
Leitura do valor no fragmento
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = this.getArguments();
String myValue = bundle.getString("message");
...
...
...
}
ou apenas
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String myValue = this.getArguments().getString("message");
...
...
...
}
Se você passar uma referência ao fragmento (subclasse concreta de) para a tarefa assimétrica, você pode então acessar o fragmento diretamente.
Algumas formas de passar a referência do fragmento para a tarefa assimétrica:
classe FooTask estende AsyncTask
), então passe o seu fragmento para o construtor.