Recuperar valores rotate screen com AsyncTask

02/02/2016

1

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

Responder

Posts

13/02/2016

Firstzillan

??????????????
Responder

13/02/2016

Asadsdggfhfh

First
Responder