Olá, pessoal. Sou novo aqui no fórum, e esta é a primeira vez que posto aqui, e a que mais preciso também. Estou fazendo um curso onde aprendo várias linguagens e várias plataformas diferentes, e uma delas é a programação mobile, onde fazemos apps para Android. Porém eu sou péssimo nesse tipo de programação e não consigo fazer absolutamente nada. Eis que, como estamos no final do curso, temos sempre que apresentar um projeto para o professor, e dessa vez não foi diferente: preciso fazer um app para uma biblioteca e logo no começo já encontrei problemas: Não consigo fazer com que os botões da MainActivity abram nenhuma outra activity, e sempre que tento, o aplicativo para de funcionar. Vou deixar abaixo algumas especificações e o código e gostaria muto de saber se alguém poderia me ajudar nesse dilema:
Main:
package com.projeto.curso;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button botaoLeitores = (Button) findViewById(R.id.gerLeitores);
Button botaoLivros = (Button) findViewById(R.id.gerLivros);
Button botaoAutores = (Button) findViewById(R.id.gerAutores);
Button botaoEmprestimos = (Button) findViewById(R.id.ctrlEmprestimos);
botaoLeitores.setOnClickListener(this);
botaoLivros.setOnClickListener(this);
botaoAutores.setOnClickListener(this);
botaoEmprestimos.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.gerLeitores){
Intent it = new Intent(this, LeitoresActivity.class);
startActivity(it);
}
if(v.getId() == R.id.gerLivros){
Intent it = new Intent(this, LivrosActivity.class);
startActivity(it);
}
if(v.getId() == R.id.cadLeitores){
Intent it = new Intent(this, CadastroActivity.class);
startActivity(it);
}
}
}
Activity que pretendo abrir:
package com.projeto.curso;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
public class LeitoresActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_leitores);
Button cadastroClientes = (Button) findViewById(R.id.cadastroClientes);
cadastroClientes.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Banco bd = new Banco(this);
ArrayAdapter adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, bd.buscaTodosNomes());
Spinner listaNomes = (Spinner) findViewById(R.id.selecionaLeitor);
listaNomes.setAdapter(adapter);
}
}
Banco de dados:
package com.projeto.curso;
import java.util.ArrayList;
import android.annotation.TargetApi;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.os.Build;
public class Banco extends SQLiteOpenHelper{
// Variável estática com o comando CREATE da tabela leitor
private static String criaTabelaLeitores = "CREATE TABLE leitores("
+ "cpf VARCHAR(15) NOT NULL PRIMARY KEY, "
+ "nome VARCHAR(50) NOT NULL,"
+ "email VARCHAR (50),"
+ "telefone VARCHAR(20),"
+ "endereco VARCHAR(100)"
+ ");" ;
public Banco(Context context) {
super(context, "BibliotecaBancada", null , 1);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public Banco(Context context, String name, CursorFactory factory, int version,
DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(criaTabelaLeitores);
}
//Método para realizar um comando de INSERT na tabela Leitor
public boolean cadastraLeitor (String CPF, String nome, String email, String telefone, String endereco){
boolean leitorCadastrado = false;
//Acessando o banco de dados que foi montado para a aplicação
SQLiteDatabase banco = getWritableDatabase();
//Classe utilizada para passagem de valores
ContentValues valores = new ContentValues();
//Primeiro precisamos passar os valores e depois executar o comando INSERT
//Passagem de valores
valores.put("cpf", CPF);
valores.put("nome", nome);
valores.put("email", email);
valores.put("telefone", telefone);
valores.put("endereco", endereco);
//Executa o comando INSERT no banco e verifica se foi alterado alguma coisa
// nome_da_tabela // valor_a_serem_inseridos
if(banco.insert("leitores", null, valores) != -1){
leitorCadastrado = true;
}
//Fecha a conexão do banco de dados
banco.close();
return leitorCadastrado;
}
//Método para realização de SELECT na tabela leitores
public ArrayList<String> buscaTodosNomes(){
ArrayList<String> todosNomes = new ArrayList<String>();
SQLiteDatabase banco = getWritableDatabase(); //busca as tabelas do banco
Cursor c = banco.rawQuery("SELECT nome FROM leitores", null);
// Verificando se retornou alguma linha
if(c != null){
c.moveToFirst();
do{
todosNomes.add(c.getString(0));
}while(c.moveToNext());
}
//Fecha a conexão para liberar o recurso
banco.close();
return todosNomes;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
private static String criaTabelaLeitores = "CREATE TABLE livros("
+ "codigo INT NOT NULL PRIMARY KEY IDENTITY, "
+ "nome VARCHAR(50) NOT NULL,"
+ "autor VARCHAR (50),"
+ "editora VARCHAR(20),"
+ ");" ;
public Banco(Context context) {
super(context, "BibliotecaBancada", null , 1);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public Banco(Context context, String name, CursorFactory factory, int version,
DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(criaTabelaLeitores);
}
//Método para realizar um comando de INSERT na tabela Leitor
public boolean cadastraLivro (int codigo, String nome, String autor, String editora){
boolean livroCadastrado = false;
//Acessando o banco de dados que foi montado para a aplicação
SQLiteDatabase banco = getWritableDatabase();
//Classe utilizada para passagem de valores
ContentValues valores = new ContentValues();
//Primeiro precisamos passar os valores e depois executar o comando INSERT
//Passagem de valores
valores.put("cpf", CPF);
valores.put("nome", nome);
valores.put("email", email);
valores.put("telefone", telefone);
valores.put("endereco", endereco);
//Executa o comando INSERT no banco e verifica se foi alterado alguma coisa
// nome_da_tabela // valor_a_serem_inseridos
if(banco.insert("livros", null, valores) != -1){
livroCadastrado = true;
}
//Fecha a conexão do banco de dados
banco.close();
return livroCadastrado;
}
//Método para realização de SELECT na tabela leitores
public ArrayList<String> buscaTodosLivros(){
ArrayList<String> todosNomes = new ArrayList<String>();
SQLiteDatabase banco = getWritableDatabase(); //busca as tabelas do banco
Cursor c = banco.rawQuery("SELECT nome FROM livros", null);
// Verificando se retornou alguma linha
if(c != null){
c.moveToFirst();
do{
todosLivros.add(c.getString(0));
}while(c.moveToNext());
}
//Fecha a conexão para liberar o recurso
banco.close();
return todosLivros;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Estou programando com o Eclipse. Caso alguém possa me ajudar, serei muito grato. Me desculpem pelos textos e códigos longos e muito obrigado pela atenção de vocês.