I created an application that uses the database and it is not running. When I open it, it shows the following message
"Beta Database application stopped"
So I went to see LogCat and it shows that the error is in the onCreate of my activity ... could anyone help me?
ERROR:
10-12 09:30:52.251 983-983/com.gif.bancodedadosbeta E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gif.bancodedadosbeta/com.gif.bancodedadosbeta.Home}: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat. at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:720) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:187) at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:77) at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:127) at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:147) at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:27) at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:50) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201) at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181) at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521) at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71) at com.gif.bancodedadosbeta.Home.onCreate(Home.java:14) at android.app.Activity.performCreate(Activity.java:5133) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
ACTIVITY CODE:
package com.gif.bancodedadosbeta;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.util.Iterator;
import java.util.List;
public class Home extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
DbHelper dbh = new DbHelper(this);
// add na tabela
Livro SenhorDosAneis = new Livro(0,"Senhor dos Aneis", "Tokien", 300);
dbh.insertLivro(SenhorDosAneis);
dbh.insertLivro(new Livro(0,"Guerra dos tronos", "Martin", 1000));
//recuperar outro livro
List<Livro> listaLivros = dbh.selectTodosOsLivros();
//Aparecer no logcat
for (Iterator iterator = listaLivros.iterator(); iterator.hasNext();){
Livro livro = (Livro) iterator.next();
Log.i("AppMinhaBilioteca", livro.toString());
}
}
}
DbHelper Database:
package com.gif.bancodedadosbeta;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.List;
public class DbHelper extends SQLiteOpenHelper{
// jeito mais simplificado falando o nome do banco e a sua versão
private static final String NOME_BASE = "MinhaBiblioteca";
private static final int VERSAO_BASE = 1;
//coloando o context o nome do banco null e a versao dele
public DbHelper(Context context) {
super(context, NOME_BASE, null, VERSAO_BASE);
}
// aqui se cria a tabela do banco
// (dizendo que é sql e dpois o nome dela no caso a baixo seria o "db"
@Override
public void onCreate(SQLiteDatabase db) {
// para se criar uma tabela no banco e dessa forma
// CREATE TABLE "nome da tabela ("+"id tipo dela chave primaria e add cada vez que criar uma celula," +"segundo nome da coluna tipo dela"+")";
String sqlCreateTabelaLivro = "CREATE TABLE livro(" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "titulo TEXT," + "autor TEXT," + "paginas INTEGER"+ ")";
//executando a criaçao da tabela
db.execSQL(sqlCreateTabelaLivro);
}
// Fazendo atualizaçao do banco de dados
//modo sql, depois o nome do banco, versao antiga e depois a nova versão
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
//falando o tipo dela e o nome da tabela atualizaçao
String sqlDropTabelaLivro = "DROP TABLE livro";
//executando atualizaçao da tabela
db.execSQL(sqlDropTabelaLivro);
//executando outra criançao da tabela para a nova versao do banco automaticamente
onCreate(db);
}
//criando uma insert
public void insertLivro(Livro livro){
//dizendo que é um tipo "escrever"
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
//relacionando os valores da class Livro
cv.put("titulo", livro.getTitulo());
cv.put("autor", livro.getAutor());
cv.put("paginas", livro.getPaginas());
//fazendo o insert
db.insert("livro", null, cv);
//fechando o metodo
db.close();
}
//metodo para recuperar o dados do banco
public List<Livro> selectTodosOsLivros(){
//fazendo para recuperar so um livro, se não ele recupera todos de uma vez
List<Livro> listLivros = new ArrayList<Livro>();
SQLiteDatabase db = getReadableDatabase();
String sqlSelectTodosOsLivros = "SELECT = FROM livro";
Cursor c = db.rawQuery(sqlSelectTodosOsLivros, null);
//como que eu preciso mostrar o valor fiz uma condição que se tiver valor ele mostra se nao ele pega o proximo
if(c.moveToFirst()){
//fazer do/while para poder fazer com o proximo se nao ele so pega uma lista do livros
do {
Livro onde = new Livro();
//pegando a coluna para mostrar o resultado
onde.setId(c.getInt(0));
onde.setTitulo(c.getString(1));
onde.setAutor(c.getString(2));
onde.setPaginas(c.getInt(3));
//pondo na lista de livro
listLivros.add(onde);
}while (c.moveToNext());
}
db.close();
return listLivros;
}
}
Gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.gif.bancodedadosbeta"
minSdkVersion 10
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:24.2.0'
}
- Android Studio 1.5.1
- Gradle Plugin 1.5