繁体   English   中英

出现此错误:此类应为dbHelper提供默认的构造函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM