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á…
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); }
}