Olá, estou com uma dificuldade muito grande em um assunto, provavelmente para alguém experiente parece algo bobo, mas está me fazendo quebrar a cabeça.
Criei um aplicativo onde adiciono dados e os salvo em um banco de dados SQLite, esses dados são exibidos em um ArrayList na tela principal, antes quando eu clicava no item na tela principal, ele era carregado direto para a tela de edição, mas mudei isso e agora quando clico no item ele vai para uma tela onde tenho 4 TextView que me apresentam os dados, nessa tela tenho um botão que quando pressionado leva para a tela de edição, até essa parte está tudo ocorrendo bem, consegui passar os dados de uma activity para a outra sem problemas, dei conta de recupera-los sem problema algum, o problema vem em seguida quando clico no botão salvar, ao invés dos dados serem salvos e assim editar o registro, está sendo criado um novo registro com os dados que deveriam ter sobrescrito os outro.
Código da tela onde os dados são exibidos
public class Vizualiza extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
public static final String PARA_DADOS = "PARA_DADOS";
Dados dados;
private TextView viewDominio;
private TextView viewUsuario;
private TextView viewEmail;
private TextView viewSenha;
private void objetosId(){
viewDominio = findViewById(R.id.txtViewDominio);
viewUsuario = findViewById(R.id.txtViewUsuario);
viewEmail = findViewById(R.id.txtViewEmail);
viewSenha = findViewById(R.id.txtViewSenha);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vizualiza);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
objetosId();
dados = new Dados();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.btnEditar);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String dominio = viewDominio.getText().toString();
String usuario = viewUsuario.getText().toString();
String email = viewEmail.getText().toString();
String senha = viewSenha.getText().toString();
Intent enviar = new Intent(Vizualiza.this, CadastraInformacoes.class);
Bundle dadosEnvia = new Bundle();
dadosEnvia.putString("dominio", dominio);
dadosEnvia.putString("usuario", usuario);
dadosEnvia.putString("email", email);
dadosEnvia.putString("senha", senha);
enviar.putExtras(dadosEnvia);
startActivity(enviar);
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
Intent intent = getIntent();
if (intent.hasExtra(PARA_DADOS)) {
Dados dadoRecuperado = (Dados) intent.getSerializableExtra(PARA_DADOS);
dados = dadoRecuperado;
DadosNaTela();
}
}
private void DadosNaTela() {
viewDominio.setText(dados.getDominio());
viewUsuario.setText(dados.getUsuario());
viewEmail.setText(dados.getEmail());
viewSenha.setText(dados.getSenha());
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.MenuTodos) {
Intent principal = new Intent(this, TelaPrincipal.class);
startActivity(principal);
} else if (id == R.id.MenuEmail) {
Intent email = new Intent(this, Email.class);
startActivity(email);
} else if (id == R.id.MenuCompras) {
Intent email = new Intent(this, Compras.class);
startActivity(email);
} else if (id == R.id.MenuBancos) {
Intent bancos = new Intent(this, Bancos.class);
startActivity(bancos);
} else if (id == R.id.MenuRedesSociais) {
Intent redes = new Intent(this, RedesSociais.class);
startActivity(redes);
} else if (id == R.id.MenuNuvem) {
Intent nuvem = new Intent(this, Nuvem.class);
startActivity(nuvem);
} else if (id == R.id.MenuOutros) {
Intent outros = new Intent(this, Outros.class);
startActivity(outros);
} else if (id == R.id.MenuCadastro) {
Intent cadastro = new Intent(this, CadastraInformacoes.class);
startActivity(cadastro);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Código da tela de edição
public class CadastraInformacoes extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
public static final String PARAMETRO_DADOS = "PARAMETRO_DADOS";
FloatingActionButton btnSalvar;
private Dados dados;
private int radioButtonSele;
private EditText viewDominio;
private EditText viewUsuario;
private EditText viewEmail;
private EditText viewSenha;
private RadioButton campoEmail;
private RadioButton campoCompras;
private RadioButton campoBanco;
private RadioButton campoRedes;
private RadioButton campoNuvem;
private RadioButton campoOutros;
private void objetosId(){
viewDominio = findViewById(R.id.InputDominio);
viewUsuario = findViewById(R.id.InputUsuario);
viewEmail = findViewById(R.id.InputEmail);
viewSenha = findViewById(R.id.InputSenha);
campoEmail = findViewById(R.id.radEmail);
campoCompras = findViewById(R.id.radCompras);
campoBanco = findViewById(R.id.radBancos);
campoRedes = findViewById(R.id.radRedeSociais);
campoNuvem = findViewById(R.id.radNuvem);
campoOutros = findViewById(R.id.radOutros);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastra);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
objetosId();
btnSalvar = findViewById(R.id.btnSalvar);
dados = new Dados();
btnSalvar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (viewDominio.getText().toString().isEmpty()){
viewDominio.setError("Insira um valor válido");
} else {
if (viewEmail.getText().toString().isEmpty()){
viewEmail.setError("Insira um E-mail válido!");
} else {
if (viewSenha.getText().toString().isEmpty()){
viewSenha.setError("Insira uma senha!");
} else {
if (campoEmail.isChecked() == true) {
radioButtonSele = 1;
SalvarDados();
} else {
if (campoCompras.isChecked() == true) {
radioButtonSele = 2;
SalvarDados();
} else {
if (campoBanco.isChecked() == true) {
radioButtonSele = 3;
SalvarDados();
} else {
if (campoRedes.isChecked() == true) {
radioButtonSele = 4;
SalvarDados();
} else {
if (campoNuvem.isChecked() == true) {
radioButtonSele = 5;
SalvarDados();
} else {
if (campoOutros.isChecked() == true) {
radioButtonSele = 6;
SalvarDados();
} else {
Toast.makeText(CadastraInformacoes.this, "Selecione uma categoria!", Toast.LENGTH_SHORT).show();
}
}
}
}
}
}
}
} }
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
receberDados();
}
public void receberDados(){
Intent recebe = getIntent();
Bundle dadosRecebe = recebe.getExtras();
if (dadosRecebe != null){
String dominio = dadosRecebe.getString("dominio");
String usuario = dadosRecebe.getString("usuario");
String email = dadosRecebe.getString("email");
String senha = dadosRecebe.getString("senha");
viewDominio.setText(dominio);
viewUsuario.setText(usuario);
viewEmail.setText(email);
viewSenha.setText(senha);
}
}
private void SalvarDados(){
RecebeValores();
DadosDAO dao = new DadosDAO(this);
if (dados.getId() != 1){
dao.inserir(dados);
} else {
dao.edita(dados);
}
dao.close();
finish();
}
private void RecebeValores(){
dados.setDominio(viewDominio.getText().toString());
dados.setUsuario(viewUsuario.getText().toString());
dados.setEmail(viewEmail.getText().toString());
dados.setSenha(viewSenha.getText().toString());
dados.setCampofiltro(radioButtonSele);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.MenuTodos) {
Intent principal = new Intent(this, TelaPrincipal.class);
startActivity(principal);
} else if (id == R.id.MenuEmail) {
Intent email = new Intent(this, Email.class);
startActivity(email);
} else if (id == R.id.MenuCompras) {
Intent email = new Intent(this, Compras.class);
startActivity(email);
} else if (id == R.id.MenuBancos) {
Intent bancos = new Intent(this, Bancos.class);
startActivity(bancos);
} else if (id == R.id.MenuRedesSociais) {
Intent redes = new Intent(this, RedesSociais.class);
startActivity(redes);
} else if (id == R.id.MenuNuvem) {
Intent nuvem = new Intent(this, Nuvem.class);
startActivity(nuvem);
} else if (id == R.id.MenuOutros) {
Intent outros = new Intent(this, Outros.class);
startActivity(outros);
} else if (id == R.id.MenuCadastro) {
Intent cadastro = new Intent(this, CadastraInformacoes.class);
startActivity(cadastro);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
Código do DAO