[英]Got this error : This class should provide a default constructor for dbHelper
package com.mytelco.ahliang125.mytelco;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by ahliang125 on 4/29/2015.
*/
public class DBHelper extends SQLiteOpenHelper {
//DatabaseRecord
public static final String DATABASE_CREATE_RECORD = "create table " +
DatabaseRecord.DATABASE_TABLE_RECORD + " ("
+ DatabaseRecord.KEY_ID +
" integer primary key autoincrement, " +
DatabaseRecord.NAME + " text not null, " +
DatabaseRecord.TITLE + " text not null, " +
DatabaseRecord.LINK + " text not null," +
DatabaseRecord.REMARK + " text not null, " +
DatabaseRecord.PRIORITY + " text not null, " +
DatabaseRecord.USERNAME + " text not null);";
//DatabaseRecord
public static final String DATABASE_CREATE_USER = "create table " +
DatabaseUser.DATABASE_TABLE_USER + " ("
+ DatabaseUser.KEY_ID +
" integer primary key autoincrement, " +
DatabaseUser.USERNAME + " text not null, " +
DatabaseUser.PASSWORD + " text not null);";
//version number to upgrade database version
//each time if you Add, Edit table, you need to change the
//version number.
public static final int DATABASE_VERSION = 3;
//DatabaseRecord Table
public static final String DATABASE_TABLE_RECORD = "myTelco_databaseRecord";
// DatabaseRecord Name
public static final String DATABASE_NAME_RECORD = "myTelco_databaseRecord";
//DatabaseUser Table
public static final String DATABASE_TABLE_USER = "myTelco_databaseUser";
// DatabaseUser Name
public static final String DATABASE_NAME_USER = "myTelco_databaseUser";
//DatabaseRecord path
public static final String DATABASE_PATH = "/data/data/com.example.ahliang125.mytelco/databases/";
public static final String KEY_ID = "_id";
public static final String NAME = "name";
public static final String TITLE = "title";
public static final String LINK = "link";
public static final String REMARK = "remark";
public static final String PRIORITY = "priority";
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
/*public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}*/
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//All necessary tables you like to create will create here
sqLiteDatabase.execSQL(DATABASE_CREATE_RECORD);
sqLiteDatabase.execSQL(DATABASE_CREATE_USER);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS "
+ DatabaseRecord.DATABASE_TABLE_RECORD);
onCreate(sqLiteDatabase);
}
public DBHelper(Context context) {
super(context, "myTelco_database.db", null, DATABASE_VERSION);
}
/* //---opens the database---
public DBHelper open() {
db = DBHelper.getWritableDatabase();
return this;
}
//---closes the database---
public void close() {
DBHelper.close();
}*/
}
当我尝试签署我的APK以上传到Google Play商店时,就会发生这种情况。 Google花费了几个小时,并尝试了解决方案,但仍然存在相同的错误。 帮助!我知道sqliteopenhelper没有默认的构造函数,我们需要调用显式构造函数。
我认为发生这种情况是因为您没有超级类http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html的构造函数
尝试添加SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
和SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
与其他构造函数相同
这是一个Android Lint错误,它验证清单中声明为活动或服务等入口点的类。 入口点必须具有no-arg构造函数。
您的DBHelper
不是入口点,不应在清单中声明。
默认情况下,Lint仅在发行版或显式运行时运行。 这就是为什么在导出应用的发行版时会得到它的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.