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