Obrigado pela atenção de todos.
Bruno a intenção do ListaTabelaPreco.this.finish() é exatamente o que o Diogo explicou.
Pessoal consegui resolver:
Minha estrutura está assim:
CadastroCliente (FragmentActivity) com ActionBar e Tabs.
Em cada Tab eu carrego 1 Fragment (CadastroClienteDados, CadastroClienteEntrega, CadastroClienteCobranca).
E no Fragment (CadastroClienteDados) eu tenho um botão que chama uma ListActivity (ListaTabelaPreco)
Essa lista me mostra vários itens, quando eu seleciono um. Eu preciso devolver o código selecionado para construir meu objeto TabelaPreco.
Então eu fiz da seguinte maneira, continuo chamando a ListActivity no meu Fragment:
private OnClickListener onConsultarTabelaPreco = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
Intent troca = new Intent(getActivity(), ListaTabelaPreco.class);
getActivity().startActivityForResult(troca, 3);
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getActivity().getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
};
E devolvo o Item selecionado na minha ListActivity:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Intent troca = new Intent(ListaTabelaPreco.this, CadastroClienteDados.class);
TabelaPreco tabelaPreco = (TabelaPreco) this.getListAdapter().getItem(position);
troca.putExtra("codigoTabelaPreco", tabelaPreco.getCodigo());
setResult(RESULT_OK, troca);
ListaTabelaPreco.this.finish();
}
Só que acho que era marcação minha mesmo, porque desde o começo eu controlo as ações dos Fragments de modo hierárquico então o meu FragmentActivity cuida das ações e validações dos Fragments que ficam dentro de seus Tabs.
Então a única coisa que eu fiz, foi na chamada da ListActivity trocar:
startActivityForResult(troca, 3); por getActivity().startActivityForResult(troca, 3);
E então receber o retorno no onActivityResult da FragmentActivity:
if(resultCode==RESULT_OK){
fragDados = (CadastroClienteDados) fm.findFragmentByTag("dados");
fragDados.tabelaPreco = new TabelaPreco(data.getIntExtra("codigoTabelaPreco", 0));
fragDados.cliente.setTabelaPreco(fragDados.tabelaPreco);
}else if(resultCode==RESULT_CANCELED) {
Toast.makeText(getBaseContext(), "Pesquisa Tabela Preço Cancelada!", Toast.LENGTH_LONG).show();
}
Agora está funcionando corretamente.
Obrigado mesmo assim pela atenção de todos.
On Thursday, February 28, 2013 5:08:45 PM UTC-3, Guilherme Bernardi wrote:
-- Pessoal, boa tarde.Estou tentando fazer a chamada do onActivityResult() dentro de um Fragment e não estou conseguindo.Eu tenho a seguinte estrutura:FragmentActivity que chama um Fragment e neste Fragment eu tenho um botão que chama uma ListActivity, esta list por sinal retorna um objeto para o Fragment para exibi-lo em tela.O código está dessa maneira:Função do Fragment que chama a ListActivity:private OnClickListener onConsultarTabelaPreco = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtry {Intent troca = new Intent(getActivity(), ListaTabelaPreco.class);startActivityForResult(troca, 1);} catch (Exception e) {// TODO: handle exceptionToast.makeText(getActivity().getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show(); }}};ItemClick da ListActivity chamada:@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubsuper.onListItemClick(l, v, position, id);Intent troca = new Intent(ListaTabelaPreco.this, CadastroClienteDados.class);TabelaPreco tabelaPreco = (TabelaPreco) this.getListAdapter().getItem(position); troca.putExtra("codigoTabelaPreco", tabelaPreco.getCodigo()); setResult(RESULT_OK, troca);ListaTabelaPreco.this.finish(); }E ai estou tentando chamar o onActivityResult no Fragment, mas ele parece que não possui este método.Alguém saberia como controlar o resultado de uma ListActivity desta forma que está estruturado?Obrigado desde já.
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
0 comentários:
Postar um comentário