Object Product Saves on the first screen but on the second screen

0

Hello, I'm having a problem with a study project. I have 2 activitys, First Product and Second Product.

The first instance is the Product1 object and saves it to the SQLite database, when it calls the second activity it passes the id of the product that just saved through the put.

In the second Activity, Product2 it retrieves the bank ID and saves a second product.

The problem is that it saves the first product and saves the second but if we look inside the database the second one was with the id, rest of the important information is not saved.

I checked the references inside the Layout_Product.xml, I already checked the Product object that received the information from the XML screen. It's okay.

The following SQLite Expert image:

Product

packageprodutos.compara.souza.hugo.comparaprodutos.DAO;importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importjava.util.ArrayList;importjava.util.List;importprodutos.compara.souza.hugo.comparaprodutos.Model.Produto;/***CreatedbyHugoon24/06/2015.*/publicclassProdutoDAO{//TODOdeclarandoobjeto//ObjetodatabaseHelperdaClassedomesmonomequeauxilianogerenciamentodobancoprivateDatabaseHelperdatabaseHelper;//BancodedadosprivateSQLiteDatabasecomparedatabase;//ConstructorquerecebeocontextoeinstanciaoDatabaseHelper()publicProdutoDAO(Contextctx){databaseHelper=newDatabaseHelper(ctx);}//TODO:sad//M�todoqueverificaseobancoestavazio,casoestejavazioeleabreobanco.privateSQLiteDatabasegetDatabase(){if(comparedatabase==null){comparedatabase=databaseHelper.getWritableDatabase();}returncomparedatabase;}//RecuperadeumcursordadosquevieramdeumbancoporexemploparaIncstanciarumProdutoque//poderasertrabalhadocomoModel(ObjetoVO,POJOporexemplo)privateProdutocriarProduto(Cursorcursor){Produtoproduto=newProduto(cursor.getInt(cursor.getColumnIndex(DatabaseHelper._Produto.ID_PROD)),cursor.getString(cursor.getColumnIndex(DatabaseHelper._Produto.UNIDADE)),cursor.getString(cursor.getColumnIndex(DatabaseHelper._Produto.DESCRICAO)),cursor.getString(cursor.getColumnIndex(DatabaseHelper._Produto.QUANTIDADE)),cursor.getString(cursor.getColumnIndex(DatabaseHelper._Produto.PRECO)));returnproduto;}/*M�tododeinsertdentrodobancodedados.Elerecebecomoparametroumobjetodotipoprodutoqueveiodaaplica��o(Activityporexemplo)aondeestatrabalhandocomoobjetoDAO*/publicbooleansalvarProduto(Produtoproduto){//ContentValuequeserausadoparapassarcomoparametronosm�todosupdateouinsertdobancodedadosContentValuesctv=newContentValues();ctv.put(DatabaseHelper._Produto.UNIDADE.toString(),produto.getUnidade().toString());ctv.put(DatabaseHelper._Produto.DESCRICAO,produto.getDesricao());ctv.put(DatabaseHelper._Produto.QUANTIDADE.toString(),produto.getQuantidade());ctv.put(DatabaseHelper._Produto.PRECO.toString(),produto.getPreco());//CasooprodutoquefoipassadocomoparametroparaometodosalvarProduto()sejadiferentedeNULL//ouseja,existeumid,ouseja,eleestatentandoatualizaralgoquejaexisteelechamaometodo.update()if(produto.getId_prod()!=null){returngetDatabase().update(DatabaseHelper._Produto.TABELA,ctv,"id_prod=?", new String[]{produto.getId_prod().toString()})>0;
    }

    // Caso contario , se o id for null ele insere os dados
    return getDatabase().insert(DatabaseHelper._Produto.TABELA, null, ctv)>0;
    }

    public boolean removerProduto(Produto produto){
    return getDatabase().delete(DatabaseHelper._Produto.TABELA, "id_prod", new String[]{produto.getId_prod().toString()})>0;
    }

    public Produto buscarProdutobyID(Integer id){
    Cursor cursor = getDatabase().query(DatabaseHelper._Produto.TABELA, DatabaseHelper._Produto.COLUNAS, "id_prod=?", new String[]{id.toString()}, null, null, null);

    if (cursor.moveToFirst()){
        Produto produtomodel = criarProduto(cursor);
        cursor.close();
        return produtomodel;
    }
        return null;
    }

    public Integer ultimoProduto(){
    Cursor cursor = getDatabase().query(DatabaseHelper._Produto.TABELA, DatabaseHelper._Produto.COLUNAS, null, null, null, null, null);

    if (cursor.moveToLast()){
        Produto produtomodel = criarProduto(cursor);
        cursor.close();
        return produtomodel.getId_prod();
    }
    return null;
    }


    //M�todo que vai retornar uma LISTA de produtos
    public List<Produto> produtoAll(){
    //   Sempre quando tivermos algo como uma lista ou um resultado fatalmente precisaremos de
    // um CURSOR para percorrer os resultados e montar ou apresentar esse reultado depois
    // O cursor precisa de ser instanciado com um banco de dados e algum m�todo do banco de dados como uma query,
    // nesse caso foi criado um outro m�todo getDatabase() que esta acima verifica se o banco n�o esta
    // vazio, caso esteja o banco � aberto com o m�todo getWritableDatabase() e retorne um objeto do tipo SQliteDatabase
    // a Query precisa dos parametros para fazer a consulta no banco que s�o:
    /*/ query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having,
            String orderBy)*/
    Cursor cursor = getDatabase().query(DatabaseHelper._Produto.TABELA, DatabaseHelper._Produto.COLUNAS,
            null, null, null, null, null);

    //A lista de produtos que sera de fato retornada pelo m�todo produtoALL()
    //Essa lista 'produtos' logo a frente vai receber pelo m�todo .add cada produto que existe no cursosr quando passar
    //pelo While caso seja possivel (se existir) mover para o proximo item do cursos.
    List<Produto> produtos = new ArrayList<Produto>();

    //While que passa por cada item do cursor. Enquanto existir itens para serem movidor ele move para o pr�ximo com o
    //m�todo moveToNext() que � um m�todo da Classe Cursor como podemos ver logo abaixo.
    while (cursor.moveToNext()){
        //Cada passada pelo cursor dentro do While ele cria um novo objeto produto e insere com o .add dentro da lista
        //de produtos
        Produto produto = criarProduto(cursor);
        produtos.add(produto);
    }

    //Retorna a lista de produtos
    return produtos;
    }






    public void fecharDB(){
    databaseHelper.close();
    comparedatabase.close();
    }




}

First Product Activity

package produtos.compara.souza.hugo.comparaprodutos.Activity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import produtos.compara.souza.hugo.comparaprodutos.DAO.ProdutoDAO;
import produtos.compara.souza.hugo.comparaprodutos.Model.Produto;
import produtos.compara.souza.hugo.comparaprodutos.R;
import produtos.compara.souza.hugo.comparaprodutos.util.SystemUiHider;


/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 *
 * @see SystemUiHider
 */
public class PrimeiroProduto extends Activity {

    private EditText edt_produto;
    private EditText edt_preco;
    private EditText edt_unidade;
    private EditText edt_quantidade;
    private Button btn_proximo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.layout_primeiro_produto);

    edt_produto = (EditText) findViewById(R.id.edt_produto1);
    edt_preco = (EditText) findViewById(R.id.edt_preco1);
    edt_unidade = (EditText) findViewById(R.id.edt_unidade1);
    edt_quantidade = (EditText) findViewById(R.id.edt_quantidade1);
    btn_proximo = (Button) findViewById(R.id.btn_Proximo);

    btn_proximo.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Produto mproduto = new Produto();
            mproduto.setDesricao(edt_produto.getText().toString());
            mproduto.setPreco(edt_preco.getText().toString());
            mproduto.setUnidade(edt_unidade.getText().toString());
            mproduto.setQuantidade(edt_quantidade.getText().toString());

            final ProdutoDAO pDAO = new ProdutoDAO(getBaseContext());
            if (pDAO.salvarProduto(mproduto)) {
                Log.i("banco", "Produto salvo", null);
                AlertDialog.Builder msg = new AlertDialog.Builder(PrimeiroProduto.this);
                msg.setMessage("Ir para o proximo Produto");
                msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        startActivity(new Intent(getBaseContext(), SegundoProduto.class).putExtra("id", pDAO.ultimoProduto()));
                    }
                });
                msg.setNegativeButton("Não", null);
                msg.show();
            }
        }
    });


    // Set up an instance of SystemUiHider to control the system UI for
    // this activity.

    }
}

Second Avtivity Product

package produtos.compara.souza.hugo.comparaprodutos.Activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import produtos.compara.souza.hugo.comparaprodutos.DAO.ProdutoDAO;
import produtos.compara.souza.hugo.comparaprodutos.Model.Produto;
import produtos.compara.souza.hugo.comparaprodutos.R;
import produtos.compara.souza.hugo.comparaprodutos.util.SystemUiHider;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 *
 * @see SystemUiHider
 */
public class SegundoProduto extends Activity {

    private EditText edt_produto2;
    private EditText edt_preco2;
    private EditText edt_unidade2;
    private EditText edt_quantidade2;
    private Button btn_compare;

    private Produto mProduto2;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.layout_segundo_produto);

    edt_produto2 = (EditText) findViewById(R.id.edt_produto2);
    edt_preco2 = (EditText) findViewById(R.id.edt_preco2);
    edt_unidade2 = (EditText) findViewById(R.id.edt_unidade2);
    edt_quantidade2 = (EditText) findViewById(R.id.edt_quantidade2);
    btn_compare = (Button) findViewById(R.id.btn_Compare);

    final Intent intent = getIntent();
    final Integer ID = intent.getIntExtra("id", 0);

    final ProdutoDAO pDAO = new ProdutoDAO(getBaseContext());
    final Produto mProduto1 = pDAO.buscarProdutobyID(ID);

    mProduto2 = new Produto();

    mProduto2.setDesricao(edt_produto2.getText().toString());
    mProduto2.setPreco(edt_preco2.getText().toString());
    mProduto2.setUnidade(edt_unidade2.getText().toString());
    mProduto2.setQuantidade(edt_quantidade2.getText().toString());

    pDAO.salvarProduto(mProduto2);

    btn_compare.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                int[] arrayIDs = new int[2];
                arrayIDs[0] = mProduto1.getId_prod();
                arrayIDs[1] = pDAO.ultimoProduto();
                startActivity(new Intent(getBaseContext(), Compare_Activity.class).putExtra("ids", arrayIDs));

            } catch (Exception e) {
                Log.e("meuapp", "Erro do Try Catch: " + e.getMessage().toString());
            }

        }
    });





    }
}
    
asked by anonymous 16.07.2015 / 02:40

1 answer

0

Your code is saving to the mProduto2 object the contents of the EditText empty fields and saving those values in the database before you can type them.

To fix this, change this snippet ...

mProduto2 = new Produto();

mProduto2.setDesricao(edt_produto2.getText().toString());
mProduto2.setPreco(edt_preco2.getText().toString());
mProduto2.setUnidade(edt_unidade2.getText().toString());
mProduto2.setQuantidade(edt_quantidade2.getText().toString());

pDAO.salvarProduto(mProduto2);

btn_compare.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        try {
            int[] arrayIDs = new int[2];
            arrayIDs[0] = mProduto1.getId_prod();
            arrayIDs[1] = pDAO.ultimoProduto();
            startActivity(new Intent(getBaseContext(), Compare_Activity.class).putExtra("ids", arrayIDs));

        } catch (Exception e) {
            Log.e("meuapp", "Erro do Try Catch: " + e.getMessage().toString());
        }

    }
});

... for this:

mProduto2 = new Produto();

btn_compare.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mProduto2.setDesricao(edt_produto2.getText().toString());
        mProduto2.setPreco(edt_preco2.getText().toString());
        mProduto2.setUnidade(edt_unidade2.getText().toString());
        mProduto2.setQuantidade(edt_quantidade2.getText().toString());

        pDAO.salvarProduto(mProduto2);

        try {
            int[] arrayIDs = new int[2];
            arrayIDs[0] = mProduto1.getId_prod();
            arrayIDs[1] = pDAO.ultimoProduto();
            startActivity(new Intent(getBaseContext(), Compare_Activity.class).putExtra("ids", arrayIDs));

        } catch (Exception e) {
            Log.e("meuapp", "Erro do Try Catch: " + e.getMessage().toString());
        }

    }
});
    
16.07.2015 / 13:32