Arthur Sanches
- Posts no fórum: 1
05/01/2017, 23:37:47 via Web
05/01/2017 23:37:47 via Web
Dae galera, seguinte... Dei uma pesquisada e uma estudada, até conseguir finalizar uma ideia de aplicativo, por hora não é grande coisa e não tem nada de diferente. Mas me vi em um problema, o meu banco de dados salva, altera e exclui o que foi cadastrado. Mas se o aplicativo é fechado, quando aberto de novo todos os cadastros não aparecem mais... É como se nada tivesse sido cadastrado...
Segue o código que peguei na net, o do MainActivity.
public class MainActivity extends ListActivity {
private static final int INCLUIR = 0;
private static final int ALTERAR = 1;
private UsuarioDAO usuarioDAO;
List<Usuario> usuarios;
UsuarioAdapter adapter;
boolean blnShort = false;
int posicao = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usuarioDAO = new UsuarioDAO(this);
usuarioDAO.open();
usuarios = usuarioDAO.readAll();
adapter = new UsuarioAdapter(this, usuarios);
setListAdapter(adapter);
registerForContextMenu(getListView());
}
// Este evento será chamado pelo atributo onClick
// que está definido no botão criado no arquivo main.xml
public void onClick(View view) {
switch (view.getId()) {
case R.id.add:
InserirUsuario();
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Usuario user = null;
try {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
// obtem dados inseridos/alterados na Activity ContatoUI
user = (Usuario) data.getExtras().getSerializable("usuario");
// o valor do requestCode foi definido na função
// startActivityForResult
if (requestCode == INCLUIR) {
// verifica se digitou algo no nome do contato
if (!user.getNome().equals("")) {
// necessário abrir novamente o BD pois ele foi fechado
// no método onPause()
usuarioDAO.open();
// insere o contato no Banco de Dados SQLite
usuarioDAO.create(user);
// insere o contato na lista de contatos em memória
usuarios.add(user);
}
} else if (requestCode == ALTERAR) {
usuarioDAO.open();
// atualiza o contato no Banco de Dados SQLite
// atualiza o contato na lista de contatos em memória
usuarios.set(posicao, user);
}
// método responsável pela atualiza da lista de dados na tela
adapter.notifyDataSetChanged();
}
} catch (Exception e) {
trace("Erro : " + e.getMessage());
}
}
private void InserirUsuario() {
try {
// a variável "tipo" tem a função de definir o comportamento da
// Activity
// ContatoUI, agora a variável tipo está definida com o valor "0"
// para
// informar que será uma inclusão de Contato
Intent it = new Intent(this, UsuarioUI.class);
it.putExtra("tipo", INCLUIR);
startActivityForResult(it, INCLUIR);// chama a tela e incusão
} catch (Exception e) {
trace("Erro : " + e.getMessage());
}
}
public void toast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
private void trace(String msg) {
toast(msg);
}
@Override
protected void onResume() {
// quando a Activity main receber o foco novamente abre-se novamente a
// conexão
usuarioDAO.open();
super.onResume();
}
@Override
protected void onPause() {
// toda vez que o programa peder o foco fecha-se a conexão com o BD
usuarioDAO.close();
super.onPause();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
try {
// Criação do popup menu com as opções que termos sobre
// nossos Contatos
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
if (!blnShort) {
posicao = info.position;
}
blnShort = false;
menu.setHeaderTitle("Selecione:");
// a origem dos dados do menu está definido no arquivo arrays.xml
String[] menuItems = getResources().getStringArray(R.array.menu);
for (int i = 0; i < menuItems.length; i++) {
menu.add(Menu.NONE, i, i, menuItems[i]);
}
} catch (Exception e) {
trace("Erro : " + e.getMessage());
}
}
// Este método é disparado quando o usuário clicar em um item do ContextMenu
@Override
public boolean onContextItemSelected(MenuItem item) {
Usuario user = null;
try {
int menuItemIndex = item.getItemId();
// Carregar a instância POJO com a posição selecionada na tela
user = (Usuario) getListAdapter().getItem(posicao);
if (menuItemIndex == 0) {
// Carregar a Activity ContatoUI com o registro selecionado na
// tela
Intent it = new Intent(this, UsuarioUI.class);
it.putExtra("tipo", ALTERAR);
it.putExtra("usuario", user);
startActivityForResult(it, ALTERAR); // chama a tela de
// alteração
} else if (menuItemIndex == 1) {
// Excluir do Banco de Dados e da tela o registro selecionado
usuarioDAO.delete(user);
usuarios.remove(user);
adapter.notifyDataSetChanged(); // atualiza a tela
}
} catch (Exception e) {
trace("Erro : " + e.getMessage());
}
return true;
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// por padrão o ContextMenu, só é executado através de LongClick, mas
// nesse caso toda vez que executar um ShortClick, abriremos o menu
// e também guardaremos qual a posição do itm selecionado
posicao = position;
blnShort = true;
this.openContextMenu(l);
}
}
E esse é do banco de dados, o BaseDAO.
public class BaseDAO extends SQLiteOpenHelper {
public static final String TABLE_USUARIO = "usuarioCRUD";
public static final String USUARIO_ID = "_id";
public static final String USUARIO_NOME = "nome";
public static final String USUARIO_CPF = "cpf";
public static final String USUARIO_TELEFONE = "telefone";
public static final String USUARIO_EMAIL = "email";
public static final String DATABASE_NAME = "usuario.db";
public static final int DATABASE_VERSION = 1;
public static final String CREATE_USUARIO = "create table " + TABLE_USUARIO + " ( " +
USUARIO_ID + " integer primary key autoincrement, " +
USUARIO_NOME + " text not null, " +
USUARIO_CPF + " text not null, " +
USUARIO_TELEFONE + " text not null, " +
USUARIO_EMAIL + " text not null);";
public BaseDAO(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
System.out.println("passou no " + this.toString());
database.execSQL(CREATE_USUARIO);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
database.execSQL("DROP TABLE IF EXISTS " + TABLE_USUARIO);
onCreate(database);
}
}
Desde já, agradeço a atenção e a ajuda.
Conteúdo editorial recomendado
Com o seu consentimento, o conteúdo externo é carregado aqui.
Ao clicar no botão acima, concorda que o conteúdo externo poderá ser-lhe exibido. Os dados pessoais podem ser transmitidos a fornecedores terceiros no processo. Pode encontrar mais informações sobre isto no nosso Política de Privacidade.