Recuperar valores rotate screen com AsyncTask
02/02/2016
0
Boa tarde Pessoal.
Estou tentando fazer uma recuperação de valores ao rotacionar a tela porém não estou conseguindo..
Quero fazer o seguinte: Quando entro na tela ele consome uma AsyncTask para pegar os dados de um WebService, popula alguns TextView e um ListView. Até aí está funcionando, o problema está ao rotacionar a tela. Não preciso consumir novamente, somente salvar o estado atual e popular novamente..
Estou tentando trabalhar com o onSaveInstanceState porém não está rolando..
Segue meu código aí pessoal.. Muito Obrigado desde já..
Estou tentando fazer uma recuperação de valores ao rotacionar a tela porém não estou conseguindo..
Quero fazer o seguinte: Quando entro na tela ele consome uma AsyncTask para pegar os dados de um WebService, popula alguns TextView e um ListView. Até aí está funcionando, o problema está ao rotacionar a tela. Não preciso consumir novamente, somente salvar o estado atual e popular novamente..
Estou tentando trabalhar com o onSaveInstanceState porém não está rolando..
Segue meu código aí pessoal.. Muito Obrigado desde já..
public class PrincipalActivity extends AppCompatActivity implements TaskCompleteArrayList { FragmentManager fm = getSupportFragmentManager(); AutenticarUsuario representante; frag_principal_esquerdo leftFrag; frag_principal_direito rigthFrag; Double valorVendas; private GsonArrayWrappedTask<ListarAgrupClientesTodos> taskVendas; List<ListarAgrupClientesTodos> listaAgrupClientes; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_principal); Intent intent = getIntent(); if (savedInstanceState != null) { this.listaAgrupClientes = (List<ListarAgrupClientesTodos>) savedInstanceState.getSerializable("itens"); carregaValores(listaAgrupClientes, savedInstanceState.getDouble("vendas"), savedInstanceState.getString("usuario")); } else//if (listaAgrupClientes == null) { representante = (AutenticarUsuario) intent.getSerializableExtra("Representante"); CarregaFragments(); CargaDados(); } } @Override protected void onResume() { super.onResume(); } private void carregaValores(List<ListarAgrupClientesTodos> listaAgrupClientes, Double vendas, String usuario) { leftFrag.setTxtUsuario(usuario); DecimalFormat df = new DecimalFormat("0.##"); leftFrag.setTxtVendas(df.format(vendas)); ListaClientesAdapter adapter = new ListaClientesAdapter(PrincipalActivity.this, listaAgrupClientes); ListView ListViewlistaAlunos = (ListView) findViewById(R.id.lista_fragment); ListViewlistaAlunos.setAdapter(adapter); } public void CargaDados() { //region obtendo o valor de vendas String urlParam = PrincipalActivity.this.getString(R.string.urlListarAgrupClientesTodos) + "01122015" + "/" + "31122015" + "/" + representante.getRepresentanteId(); taskVendas = new GsonArrayWrappedTask<ListarAgrupClientesTodos>(PrincipalActivity.this, PrincipalActivity.this,ListarAgrupClientesTodos.class, "ListarAgrupClientesTodosResult", true, "Atualizando os dados..."); taskVendas.execute(urlParam); //endregion } public void CarregaFragments() { leftFrag = new frag_principal_esquerdo(); rigthFrag = new frag_principal_direito(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.layout_esquerdo, leftFrag, "leftFrag"); ft.replace(R.id.layout_direito, rigthFrag, "rigthFrag"); ft.commit(); } @Override public void onTaskCompleteArrayList(List result) { if (result == null) { MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", "Erro ao obter dados. Verifique a conexão de rede.", R.drawable.delete); } else { List<ListarAgrupClientesTodos> listaAgrupClientes = (ArrayList<ListarAgrupClientesTodos>) result; valorVendas = 0.00; for(int j=0; j<listaAgrupClientes.size(); j++){ try { valorVendas += Double.parseDouble(listaAgrupClientes.get(j).getClienteTotalFat()); } catch (Exception e) { MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", e.getMessage(), R.drawable.delete); } } this.carregaValores(listaAgrupClientes, valorVendas, representante.getUsuarioNome()); } } @Override public void onTaskException(Exception e) { MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", "Erro ao obter dados. Verifique a conexão de rede.\n" + e.getMessage(), R.drawable.delete); } @Override public OncoSalesAndroidApplication getOncoSalesAndroidApplication() { return (OncoSalesAndroidApplication) getApplication(); } @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); final TextView textbox = (TextView) findViewById(R.id.txtVendas); //outState.putCharSequence("usuario", representante.getUsuarioNome()); outState.putCharSequence("usuario", textbox.getText()); outState.putDouble("vendas", valorVendas); outState.putSerializable("itens", (ArrayList<ListarAgrupClientesTodos>) this.listaAgrupClientes); } }
Eric Miranda
Curtir tópico
+ 0
Responder
Posts
13/02/2016
Firstzillan
??????????????
Responder
Gostei + 0
13/02/2016
Asadsdggfhfh
First
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)